Barcelona put on a good fight as an underdog, but in the end it was Real Madrid celebrating again after a thrilling "clasico" between the Spanish powerhouses in Saudi Arabia.
Federico Valverde has scored in extra time to give Real Madrid a 3-2 win over Barcelona for their 100th victory in their storied rivalry and a spot in the final of the Spanish Super Cup in Riyadh, Saudi Arabia.
Barcelona twice equalised in regular time but couldn't recover after Valverde scored from close range on a breakaway eight minutes into extra time.
Defending Super Cup champion Athletic Bilbao will face Spanish league champion Atletico Madrid in the other semi-final on Thursday (Friday AEDT).
Vinicius Jr opened the scoring for Real from a counter-attack early in the first half, but Luuk de Jong equalised shortly before halftime following a mistake by Real defender Eder Militao.
Karim Benzema put Real back in front 25 minutes into the second half, striking home on the rebound from inside the area, but a header by substitute Ansu Fati, who was making his first appearance since November, took the game into extra time.
Real found the winner from another counter-attack, with Rodrygo firing a low cross to the edge of the area. Vinicius dummied to shoot, which eliminated the entire Barca defence and left Valverde all alone to tap the ball into an empty net.
It was a mostly even match but Madrid looked the more dangerous team throughout thanks to its counterattacks led Vinicius Jr and Benzema.
It was Madrid's 100th win over Barcelona in 248 competitive matches against the rival. Barcelona has 96 wins, though none since 2019.
"I have to admit that Barcelona played well," Madrid coach Carlo Ancelotti said. "It was an even match. We were efficient on the counterattacks."
It was the first clasico for Xavi Hernandez as Barcelona coach.
"We competed well," Barcelona defender Gerard Pique said. "It's not the result we wanted but we are a step closer to winning. I'm very proud of our team.
The Spanish Super Cup is being played in Saudi Arabia again after the coronavirus pandemic transferred last year's edition back to Spain.
The competition was moved to Saudi Arabia -- and expanded from two to four teams in a "Final Four" format -- as part of a deal reportedly worth 30 million euros ($US34 million) a year until 2029.
The changes drew criticism from human rights activists and complaints from fans who preferred the competition stayed in Spain. Among those complaining was Athletic midfielder Raul Garcia, who said this week it made "no sense" to play the games away from Spain.
Only about 30,000 fans were allowed at the 62,000-capacity King Fahd International Stadium because of the coronavirus pandemic.
Australian Associated Press
Sign up for our newsletter to stay up to date.