Federico Valverde’s 98th-minute strike sealed the result for Carlo Ancelotti’s side, who were pushed all the way by the much-improved Catalan club.
The Uruguayan’s winner means Madrid will now face either Athletic Bilbao or cross-town rivals Atletico in the final, with the second semi-final set to air LIVE this Friday from 5:50am on SBS and SBS On Demand.
Madrid first took control of the contest midway through the first half after Vinicius Jr. finished a fine counter-attack from midfield, but their superiority lasted all of 15 minutes when Thibaut Courtois was beaten by a fortuitous deflection off Luuk de Jong.
Karim Benzema, as is customary for Los Blancos, restored his side’s advantage in the 72nd minute, but Barcelona again found a response – this time through Ansu Fati, who was making his first appearance since November.
With extra-time required to separate the two sides, it was a counter that would again decide Barca’s downfall and Valverde duly obliged, ensuring the La Liga leaders left Riyadh victorious.
Speaking after the match, Ancelotti was admittedly impressed by Barcelona's performance - one Xavi will undoubtedly look to replicate on Spanish soil this season.
“I have to admit that Barcelona played well,” Ancelotti said. “It was an even match. We were efficient on the counter-attacks.”
One victory now separates Madrid from their first piece of silverware in 2022, and while they do not yet know the team they'll face in the final, it promises to be another must-see match.