Federico Valverde scored in extra time as Real Madrid advanced to the Supercopa de Espana final with a 3-2 victory over Barcelona.
Vinicius Junior gave Madrid a deserved lead shortly after the midway point of the first half in Riyadh, yet Luuk de Jong ensured the sides went in at the break level with a fortuitous equaliser.
Karim Benzema restored Los Blancos' advantage in the 72nd minute, only for Ansu Fati to draw Xavi's men level once again with seven minutes left of normal time.
Valverde clipped home eight minutes into extra time, however, to set up a final clash on Sunday against either Atletico Madrid or Athletic Bilbao, who do battle in the second semi-final on Thursday.
Madrid's bright start was rewarded in the 25th minute when Vinicius raced beyond Ronald Araujo and fired past Marc-Andre Ter Stegen after Benzema had dispossessed Sergio Busquets on the halfway line.
Barca pulled level four minutes before the interval, Eder Militao's attempted clearance inside the six-yard area smashing against De Jong and spinning in off the inside of Thibaut Courtois' right-hand post.
Moments after crashing an effort against the upright, Benzema slotted home from close range after Vinicius' cross had been diverted into his path by Ter Stegen.
Substitute Fati, who was making his first appearance since November 6, sent the game to extra time, though, heading Jordi Alba's cross past Courtois from six yards.
Carlo Ancelotti's men sealed their spot in the final in the first half of extra time when Valverde slid home after a counter-attacking move that saw Barca desperately outnumbered.