In a see-sawing contest, Halep sprinted into a 6-3, 3-1 lead before the 2016 Melbourne Park winner, seeded 21, fought back.
The Romanian finally prevailed in 2hr 20min with her fourth match point to ensure a new name will grace the trophy on Saturday.
"Definitely was very tough. I'm shaking now. I'm really emotional right now because I won this match," said Halep, who saved two match points.
"I knew it was going to be tough. She is hitting from everywhere, I'm glad I could resist. Thank you everyone for supporting me, you helped me."
"I said if she come back I could do it. I had confidence in myself," said Halep.
"I tried to be calm today. It was a rollercoaster, up and down. If you don't give up you can win. I did it well. I am proud of myself."
There was little hint of the drama to come when Halep, whose Grand Slam best is twice runner-up at Roland Garros, flew out of the blocks and dropped just three points in taking a 5-0 lead before Kerber woke up.
Halep was in front at 3-1 in the second but Kerber, who will get back into the top 10 after her run at Melbourne, would not give up and extended it to a decider.
The win sets up an intriguing final where a first Grand Slam title and the world number one ranking will be on the line for both Halep and Wozniacki, with the winner claiming both.
"I want to give my best to believe that I have the chance to win and not to think about the title. If it's going to come, it's going to come."
Wozniacki beat unseeded Elise Mertens 6-3, 7-6 (7/2) to book her place in the showpiece clash.
The final will be only the 17th time in Australian Open history that the number one and two seeds have met for the title -- both first and second seeds have won eight times each.
Disclaimer: No Business Standard Journalist was involved in creation of this content
