The Romanian, twice a French Open runner-up, saved two match points on her way to a 6-3 4-6 9-7 victory.
In Saturday’s final Halep will face Caroline Wozniacki, a straight-set winner over Elise Mertens, with both women looking for a first major title.
The world number one ranking will also be up for grabs for the champion.
Halep led by a set and a break but failed to convert two match points at 5-4 in the decider, and two games later found herself facing two match points.
However, the 26-year-old hammered a forehand into the corner on her way to save the game and clinched victory at the fourth attempt when Kerber’s defence finally cracked.
“It was very tough. I’m shaking, I’m emotional,” said Halep.
“I knew it was going to be tough. She’s a tough opponent who is moving well and hitting from everywhere. I want to thank everyone for supporting me and helping me.”
Both Halep and Wozniacki have made it through to the final having saved match points along the way – Halep also saved three in the third round against Lauren Davis, while Wozniacki saved two in the second round against Jana Fett.