Daniil Medvedev needed eight match points to beat Frances Tiafoe and reach the Indian Wells final for the first time.
Russian world number six Medvedev held off a late rally to defeat the American 7-5 7-6 (7-4) in California and claim a 19th successive win.
Medvedev will play 19-year-old Carlos Alcaraz, who beat Italian Jannik Sinner 7-6 (7-4) 6-3, in Sunday’s final.
Spaniard Alcaraz will return to world number one if he lifts the title.
Medvedev arrived at Indian Wells in fine form having won back-to-back ATP titles in Rotterdam, Doha and Dubai.
It took until the 11th game of the first set for Medvedev to get the vital break of serve despite relentless play from the baseline.
He broke in the opening game, but after a spirited Tiafoe saved three match points and Medvedev was twice broken while serving for the match.
World number 16 Tiafoe battled back from 5-1 down in the tie-break to 5-4, but Medvedev scrambled over the line, serving out the win with an ace.
“It was crazy at the end,” said the former world number one. “I got super tight.
“The ace was a relief. I’m just really happy that I managed not to lose this match.”
If Medvedev beats Alcaraz he will become the first man since Britain’s Andy Murray in 2016 to win four titles in five weeks.
Alcaraz, who has now reached three finals in 2023, held a 5-3 lead in the first set before Sinner won three games in a row.
Alcaraz saved a set point in the following game before forcing a tie-break, and eased through the second set to seal victory in one hour 52 minutes.
“I don’t think about that I’m the favourite in every match,” said Alcaraz, who will begin the defence of his Miami Open title next week.
“I know if I win tomorrow I’m going to be the number one. I will try not to think about that. I have to make everything perfect.”
Earlier, Wimbledon champion Elena Rybakina defeated world number one Iga Swiatek in straight sets to reach the women’s final, where she will play Aryna Sabalenka in a repeat of the Australian Open final.
Britain’s Neal Skupski and Dutchman Wesley Koolhof were beaten 6-3 2-6 10-8 in the men’s doubles final by Australia’s Matthew Ebden and India’s Rohan Bopanna, who at 43 is the oldest player to win an ATP Masters 1,000 title.
In the women’s doubles, top seeds Barbora Krejcikova and Katerina Siniakova of the Czech Republic beat Beatriz Haddad Maia of Brazil and Germany’s Laura Siegemund 6-1 6-7 (3-7) 10-7 to claim their 15th career doubles title together.