Angel Correa scored late on as Atletico Madrid beat Barcelona 3-2 in an incident-packed game to reach the Spanish Super Cup final.
Koke’s clinical strike put Atletico ahead early in the second half.
Lionel Messi equalised and then Antoine Griezmann headed Barcelona into the lead in Saudi Arabia.
Alvaro Morata converted a penalty to make it 2-2 before Correra ran through and grabbed the winner with a powerful strike that was too strong for Neto.
In the second half, Messi had a goal ruled out by the video assistant referee for handball while Gerard Pique should have taken the game to extra time but sent his header over the bar.
Atletico’s 20-year-old Portuguese forward Joao Felix, who joined the club for £113m in the summer, was involved in an altercation with Messi in the first half, with the pair going head-to-head.
It was sparked by Barca full-back Jordi Alba appearing to poke his finger in Felix’s face.
A number of players from both sides got involved to separate Messi and Felix, with Luis Suarez having to be pulled away from Stefan Savic.
Victory means Atletico Madrid will face city rivals Real, who beat Valencia 3-1 on Wednesday, in the final on Sunday (18:00 GMT).
The tournament has a new format this season, with the top two from La Liga and the Copa del Rey finalists playing in a four-team competition rather than the two winners playing each other.
Real, despite finishing third in La Liga, qualified because Barcelona won the league and finished runner-ups in the cup.