Nico Williams climbed off the bench to score the winner as Athletic Bilbao came from behind to beat Atletico Madrid 2-1 and reach the Supercopa de Espana final at King Fahd Stadium.
Atleti looked set to face city rivals Real Madrid in the final after Unai Simon’s unfortunate own goal put them in front in the second half.
But Athletic mounted a fightback, Yeray Alvarez equalising and substitute Williams completing the comeback with nine minutes to play in Riyadh, where Jose Maria Gimenez saw red late on.
The holders and LaLiga leaders Madrid will do battle for the first trophy of the season on Sunday.
Joao Felix had the ball in the back of the net only eight seconds into the semi-final, but the Portugal forward had strayed offside.
Atleti wanted a penalty when Thomas Lemar went down under a challenge from Alex Berenguer, but referee Guillermo Cuadra Fernandez and the VAR saw nothing untoward before Jan Oblak denied Inaki Williams at the other end.
Yannick Carrasco let fly from long range, but his venomous drive was straight at Athletic goalkeeper Simon in a first half that fizzled out after a bright start.
The LaLiga champions were in front just after the hour-mark, Joao Felix rising to meet an outswinging corner from Lemar and seeing his header strike an upright before hitting Simon and creeping over the line.
Inigo Martinez came close to an equaliser when Oblak kept out his powerful header, but Alvarez levelled after 77 minutes, leaping to head Iker Muniain’s corner home.
Athletic had the momentum and Oblak produced a great save to deny Williams, but the teenager put his side ahead by slotting in with his left foot when Atleti failed to deal with another corner.
Gimenez was given his marching orders following a VAR check right at the end for a dangerous high challenge on Martinez as Atleti crashed out.
What does it mean? Spirited Athletic can retain the trophy
Athletic did not offer much of a threat going forward in the first half and might have thought it was not going to be their day when Simon’s own goal put Atleti in front.
That blow spurred them into life, though, and there only looked like being one winner after Alvarez’s equaliser.
Los Blancos will be favourites to lift the trophy this weekend, but it would be foolish to write spirited Athletic off and they are now unbeaten in four matches. Atleti, meanwhile, have not won this competition since 2014.
Teenager Williams makes a huge impact off the bench
Winger Williams was only sent on by Marcelino Garcia Toral with 20 minutes to go, replacing Alex Berenguer.
The 19-year-old made a huge impact, forcing a fine save from the excellent Oblak before showing great composure to pounce on a loose ball in the box and win it with a composed left-foot finish.
De Paul fails to deliver
Rodrigo de Paul has not had a great time of it since he joined Atleti from Udinese and he was unable to make his mark after Diego Simeone sent him on early in the second half.
The Argentine was unable to take the game by the scruff of the neck and must offer more.
What’s next?
Atleti are on their way home to prepare for a Copa del Rey tie at Real Sociedad next Wednesday, while Athletic face a weekend showdown with Carlo Ancelotti’s men.