Carlos Alcaraz defeated Novak Djokovic for the first time with a battling 6-7 (5-7), 7-5, 7-6 (7-5) triumph to book his place in the Madrid Open final.
World number one Djokovic breezed past Pole Hubert Hurkacz to reach the final four in Madrid for the seventh time, while Alcaraz battled past compatriot Rafael Nadal to make the semi-finals.
That made 19-year-old Alcaraz the first teenager to beat record 21-time grand slam winner Nadal on clay on the ATP Tour, and the Spaniard again raced out of the blocks as he immediately broke Djokovic.
However, the experienced Serbian returned the favour to level at 4-4, before eventually claiming the first set with a tie-break win after an hour-and-two-minute battle.
Neither relented in the second set, with both holding their first five service games before Alcaraz eventually broke the top seed – the first set Djokovic had dropped in Madrid – to send the match to a decider.
Alcaraz, buoyed on by a vociferous home crowd, had won three consecutive three-setters before the last-four meeting, and had the chance to follow suit, only for Djokovic to deliver an ace at match point.
Sixth straight win
Another tie-break was required to separate the pair, with Alcaraz eventually triumphing after three hours and 35 minutes to record his sixth straight win over top-10 ranked players.
Teenage star Alcaraz became the first player to defeat Nadal and Djokovic back-to-back, while he is the youngest player to defeat a world number one in 17 years.
Alcaraz, who has won his last nine matches, will play the final on Sunday in the Spanish capital against Alexander Zverev, who defeated Stefano Tsitsipas.