Six-time winner Serena Williams will face Li Na in the Sony Open final after the world's top two female players won their last-four ties in Miami.
World number one Williams, 32, recorded her 15th straight win over Maria Sharapova to reach her ninth final.
The American won five games from 4-1 down to take the first set and pulled away from 3-3 to win 6-4 6-3.
China's Li, 32, beat Dominika Cibulkova in a 7-5 2-6 6-3 victory as she aims for a maiden Miami title.
But the Australian Open winner has not beaten Williams in six years, having lost 10 of the 11 matches between the pair.
Williams had to fight hard against Sharapova after failing to convert four early break-point chances as the Russian hit a succession of winners from the baseline to forge ahead.
Three successive backhand errors by Sharapova, the world number seven, gifted Williams a break that changed the momentum of the match.
In the second set, Williams won 11 consecutive points, while Sharapova made three errors on the final three points.
"It wasn't easy," said Williams. "Maria's done really well, I just decided I had to do a little better, stay focused and make more shots."
World number two Li needed two hours and 15 minutes to see off Cibulkova, who had never beaten her in six previous meetings, including January's Australian Open final.
Li managed to nick the first set before 24-year-old Cibulkova upped the tempo to take control.
The 10th seed won six straight games to take the second set and then forge a 3-1 lead in the third.
But, after Cibulkova spurned a game point to take a 4-1 lead, Li regrouped to win four games in a row before clinching victory on her third match point.
Now she will play Williams in Saturday's final at 16:30 GMT.