John Isner produced a brilliant performance to end Juan Martin del Potro's 15-match winning streak and secure a place in the Miami Open final.
The American world number 17 hit 39 winners to seal a 6-1 7-6 (7-2) victory in one hour 22 minutes.
He hit 16 aces, won 83% of points on his first serve and took the first set against the Argentine in 27 minutes.
Isner will meet German world number five Alexander Zverev after he beat Pablo Carreno Busta 7-6 (7-4), 6-2.
Former US Open champion and world number six Del Potro claimed his maiden Masters 1000 title in Indian Wells earlier this month and has won 21 matches this season, the most on the ATP Tour.
"I am so happy," said 32-year-old Isner, bidding for a first Masters 1000 title. "He is so tired and has played so many games, and although the first set was quick I knew it wouldn't be like that in the second.
"I have played a lot of big matches and not been able to get such a good start - but I am playing some of the best tennis I have played in such a long time."
Fourth seeded Zverev took 88 minutes to beat Spain's Carreno Busta.
The 20-year-old is bidding for a seventh career ATP title and first of the season when he faces Isner in the final.
"I didn't feel I was playing my best in the beginning of the first set, a lot of errors," Zverev said.
"I was down in the tie-break and I was like, I'm losing anyway I might as well be aggressive. So that's what I did, I hit a few winners. [I was] very fortunate to win the first set."