Maria Sakkari beat defending champion Paula Badosa to reach the biggest final of her career at Indian Wells.
Greece’s Sakkari, who had previously won just 12 of her past 14 semi-finals, broke down in tears after overcoming the Spaniard 6-2 4-6 6-1.
She will face Iga Swiatek on Sunday, with the winner rising to number two in the world rankings.
Poland’s Swiatek beat Romanian Simona Halep 7-6 (7-6) 6-4 to register her 10th consecutive victory.
Sakkari hit 28 winners during the match against Badosa.
She has won one title on the WTA Tour – at the Morocco Open in 2019 – but found more consistency last year, reaching the French Open and US Open semi-finals.
“I’m turning 27 this year, which is not old, but not young as well, and I’m just more mature and things change in that age,” Sakkari said.
“Having a team like the one I have that constantly repeat that they believe in you, trust you and they’re just very proud no matter what, it makes things a lot easier.”
Sakkari leads the head-to-head with Swiatek 3-1, but Swiatek won their most recent meeting at February’s Qatar Open.
“I know Iga really well and she’s an unbelievable player,” Sakkari added.
“I respect her a lot and I admire her game. It’s just going to be an unbelievable fight for both of us.”
Former French Open champion Swiatek fought back from a break down in both sets against Halep to reach the final.
She saved two set points in the tie-breaker before eventually clinching the opener, and overturned a 4-2 deficit in the second.
Swiatek reached the Australian Open semi-finals at the start of the year before lifting the title in Doha last month.
“I feel like I’m not the underdog any more and I want to show something else and show what I learned,” Swiatek said.
“I always feel like I have nothing to lose, but this time it was a little bit different.”
In the men’s draw, American Taylor Fritz set up a semi-final meeting with seventh seed Andrey Rublev.
Fritz beat Serbia’s Miomir Kecmanovic 7-6 (7-5) 3-6 6-1 before Russia’s Rublev powered past Grigor Dimitrov 7-5 6-2.
Rafael Nadal will meet rising Spanish teenager Carlos Alcaraz in the other semi-final, with live commentary on BBC Radio 5 Live and the BBC Sport website (from 22:00 GMT).