Spanish teenager Carlos Alcaraz came from behind to beat world number one Novak Djokovic 6-7(5) 7-5 7-6(5) to reach the Madrid Open final, where on Sunday he will face Alexander Zverev after the German defeated Stefanos Tsitsipas 6-4 3-6 6-2.
Djokovic, who has yet to win a title this season, rallied from a break down to take the opening set in a tie-breaker and the 34-year-old looked dangerous on his serve as he won 2️1 straight points on it in the opener.
But Alcaraz, who turned 19 this week, showed resilience in the second set as he clawed his way back into the contest, saving a break point and holding for 6-5 before breaking Djokovic to force a decider.
The crowd in the Spanish capital got to their feet when Alcaraz completed his comeback, edging out Djokovic in the deciding tiebreak to become the first player to beat Rafa Nadal and Djokovic at the same clay court event.
"This gives me a lot of confidence to play the final tomorrow," said Alcaraz after the match which lasted three hours and 35 minutes.
"I know that I played a really good game, and for the rest of the season I think I am able to play against the best players in the world and beat them as well, so it gives me a lot of confidence."
Alcaraz showed his all-round ability throughout in his first meeting with Djokovic, pinning the Serbian back with his huge groundstrokes and using his trademark drop shots.
He struck 51 winners to Djokovic's 24 as his aggressive style troubled the world number one.
Bidding for his second Masters 1000 title, Alcaraz will play defending champion Zverev in Sunday's final.
Zverev's dominant serving proved too much for Tsitsipas to handle and he crushed a backhand winner on match point to seal his first career win over Tsitsipas on a clay court.
Zverev said he was as impressed as anyone with Alcaraz's ascent to world number nine.
"I said last year in Acapulco that by Acapulco 2023, he'd be in the top 10," Zverev said.
"He beat me by a year! He's an incredible player ... there's no limit for him."