Barcelona put in a clinical display to lift their first trophy in more than a year, having no silverware to show for last season.
Kylian Mbappe put Madrid ahead but a dominant Barcelona hit five in response before their goalkeeper Wojciech Szczesny was sent off in the second half.
LaLiga leaders Real recovered from that setback and are on a five-match winning streak ahead of defending the Super Cup in Jeddah, Saudi Arabia, but coach Carlo Ancelotti is cautious.
Last season, around this time, there was a surprise package in Girona in the top three of LaLiga. However, a year later, the Spanish league has returned to the status quo, with Real Madrid, Barcelona, and Atletico Madrid -- the three giants of Spain -- occupying the top three spots on the table at the end of 2024.
Jude Bellingham and Rodrygo scored second-half goals to help Real to a 3-0 win over Mallorca after Barcelona beat Athletic Bilbao 2-0 in the other last-four clash.
Gavi put Barcelona ahead from close range after 17 minutes and teenage winger Yamal netted the second early after the break.
Barcelona signed Olmo in August for around 55 million euros ($57 million), but with the club unable to meet LaLiga's wage capthe attacking midfielder and Spain international was registered only for the first half of the season.
The future of Olmo and young forward Pau Victor at the Catalan giants has been on hold over a financial and administrative limbo that prevented their registration beyond 2024.
Manager Hansi Flick expressed frustration over Barcelona's struggle to acquire new players' licences for Dani Olmo and Pau Victor but remained optimistic ahead of their Copa del Rey match against Barbastro, praising the duo's attitude.
Barca have now gone three games without a LaLiga win having picked up five points out of a possible 21, suffering defeats by Leganes and Las Palmas in their previous two home games. They are three points behind Atletico having played a game more.
Pedri sent the Catalans ahead but second-half goals from Rodrigo De Paul and Alexander Sorloth helped Diego Simeone's side move three points clear at the top of the table, having played one match fewer than Barca.
"Tests carried out this morning revealed a grade 1 injury to a ligament in the ankle," Barcelona said in a statement on Monday.
La Liga leaders Barcelona stumbled 1-0 at home against Leganes on Sunday as they suffered another blow in the Spanish title race.
La Liga leaders Barcelona dropped two points in the title race as Real Betis twice came from behind to snatch a 2-2 draw in an entertaining battle on Saturday.
Barcelona coach Hansi Flick on Friday said teenage winger Lamine Yamal will return after three weeks out with injury for this weekend's game against Las Palmas in La Liga.
The veteran striker slotted home from the spot in the 10th minute to fire the Catalans ahead and reach his milestone, adding a second late on after Dani Olmo's goal to inflict the French side's first defeat.
Raphinha and Robert Lewandowski's goals put the Catalans in a healthy position but Marc Casado's red card in the 82nd minute helped Celta start the fightback to snatch a point.
Lewandowski suffered a back injury in Sunday's 1-0 defeat at Real Sociedad during which he had a goal controversially disallowed.
Lewandowski's early disallowed strike led to furious debate over whether the Polish forward had been offside or not.