Roger Federer won a thrilling three-hour contest against Nick Kyrgios to set up a final against Rafael Nadal at the Miami Open.
The Swiss, 35, won 7-6 (11-9) 6-7 (9-11) 7-6 (7-5) to take his 2017 record to 18 wins and one defeat.
Federer will take on Nadal for the 37th time on Sunday, and the second this year after beating the Spaniard in January's Australian Open final.
Nadal, 30, beat Italy's Fabio Fognini 6-1 7-5 in the first semi-final.
Fognini, 29, had become the first unseeded player in 10 years to make the last four but was no match for Nadal, who will try to win a first Miami title in his fifth final on Sunday.