John Isner produced a stunning performance to snap Juan Martin del Potro’s 15-match winning streak and secure a place in the final.
Punishing a tired del Potro with his serve and groundstrokes, the big-serving American breezed through the first set in 27 minutes after securing an early break.
The American would go on to hit 39 winners to seal a 6-1 7-6(2) victory in 82 minutes.
“I am so happy,” said 32-year-old Isner. “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.”
Isner will now face German Alexander Zverev in the final at Key Biscayne.
The German fourth seed beat Spaniard Pablo Carreno Busta 7-6(4) 6-2 in an hour and 28 minutes to make the final.
The 20-year-old German will now set his sights on collecting his seventh career ATP Tour title and third Masters 1000 crown when he faces 14th-seed Isner in Sunday’s final.
Zverev is 3-0 in head-to-head meetings with Isner, his most recent victory coming in last year’s Italian Open semi-final.