Italy's Jannik Sinner turned on the style to end Carlos Alcaraz's hopes of the "Sunshine Double" and his reign as world number one, triumphing 6-7 (4/7), 6-4, 6-2 in their Miami Open semi-final on Friday.
Sinner will meet Russian Daniil Medvedev in Sunday's final while Alcaraz will lose his number one ranking to Novak Djokovic.
Medvedev reached his fifth straight ATP Tour final with a 7-6 (7/5), 3-6, 6-3 win over fellow Russian Karen Khachanov.
The disappointment for the 19-year-old Alcaraz, the defending champion in Miami and coming off a title at Indian Wells, will be tinged with frustration after he struggled in the third set with leg cramps.
It had been an enthralling and entertaining power-hitting performance from both men in the first set, with an incredible 25-shot exchange in the seventh game, bringing the crowd to their feet.
The intense, high-quality set was eventually won by the Spaniard after a tie-break, but an inspired Sinner fought back in the second.
Sinner broke in the first game and although Alcaraz broke back to make it 2-2, the 21-year-old Italian sensed his moment was arriving and showed confidence in his powerful groundstrokes.
The world number one was moving with difficulty and was broken on his first serve in the deciding set. Looking in discomfort, he crouched down on his baseline in between points and shot some worried and confused looks to his team in the stands.
Sinner chose some more conservative strokes and although Alcaraz appeared to recover a little, the Italian ran out the winner in three hours.
Alcaraz said his problems had appeared during a bathroom break after the second set.
"I went to bathroom for five minutes and yeah, everything went down for me a little bit. I stopped myself. I started cramping a little bit. You know, after a really tough match it's, well, it is tough to stop the match for five minutes," he said.
"I started cramping at the beginning of the third set, but it wasn't the reason for I lost the match. I came back…I started to feel better but of course Jannik, he was better than me in the third set. That's the truth," he said.
Sinner had lost to Alcaraz in straight sets in their meeting at the same stage in Indian Wells and he said he could feel just how high the quality of their encounter at Hard Rock Stadium had been.
"When both players play tennis like this it is very nice to play, you can feel it with the crowds. There was just a great energy with everything. It is just nice to be part of matches like this," he said.
Sinner also said that he had suffered some cramping during the second set but recovered quickly.
"I knew that I had to go on and wait for the right moment," he said. "I feel ready to compete and I am happy to be in the final," he added.
The 27-year-old Medvedev, playing against his boyhood friend, survived a second-set comeback but his trademark precision stroke play saw him through against the big-serving Khachanov in a high-quality encounter.
The contest saw a series of long rallies as Medvedev fended off Khachanov's thumping shots from the baseline and then pinned his opponent back on his service game.
Medvedev hit 13 aces and saved four of six break points as the match turned decisively in his favor when he broke Khachanov in the fourth game of the third set.
Medvedev won 82% (14 of 17) of his first-serve points in the final set and was relieved to have beaten a player who knows his game so well.
"In my opinion, it was a top match," Medvedev said. "In the first set when we lost our serves, it was just a good game from the returner.
"In the second set, I had one bad game and he won the set. I had one break point, I could have done better. He had a break point in the first game of the third set, I managed to play well. He had one bad game in the third set, I managed to take it and I am really happy to be through. It was a very tough match".