Romanian third seed Halep saved a match point as she trailed Elina Svitolina 6-3, 5-1 before launching a sensational comeback to stun the Ukrainian in three sets.
Fifth seed Svitolina twice served for the match at 5-2 and 5-4 in the second set and then had match point at 6/5 in the tie-break.
But she failed to put away Halep and the 2014 Roland Garros runner-up powered through the decider in just 20 minutes to complete a remarkable 3-6, 7-6 (8/6), 6-0 victory.
"I think I was strong mentally. I didn't give up. That's maybe why I won this match."
Also Read
Svitolina, 22, had looked well-set to become the first Ukrainian woman to make a Grand Slam semi-final.
She allowed Halep just four winners in the first set and coasted to within sight of the last four, but the Romanian ran away with 12 of the last 13 games to avenge her loss in the Rome final.
"I don't really need to talk about this match as a bad experience.
"I'm sad today but tomorrow is another day and life continues, there's nothing I can do."
Svitolina, who had been two points from defeat in the fourth round against Petra Martic, finished the quarter-final with 45 unforced errors.
Halep will meet second seed Pliskova for a place in Saturday's final after the second defeated Garcia 7-6 (7/3), 6-4.
Pliskova, 25, will replace Angelique Kerber as the new world number one if she makes the final, while Halep would rise to the top of the rankings should she claim the title in Paris.
The 25-year-old then broke the Frenchwoman as she served to stay in the match to clinch just her second appearance in the last four at a Grand Slam.
"It was very tough. She played very well, we were both serving well. She played a great tournament, even today, it was 50-50, it came down to about two points I'm really glad I made it," said Pliskova.
Last year's US Open finalist entered Roland Garros with just two wins in five previous visits.
Disclaimer: No Business Standard Journalist was involved in creation of this content