The former world No 1, who ran the 2014 New York marathon for charity, needed two hours and 58 minutes to claim a 7-5 5-7 6-2 victory and will now meet either Germany’s Angelique Kerber or American Madison Brengle in Sunday’s final.
“I felt good right through until the end,” said Denmark’s Wozniacki.
“I love these long matches and if I can run a marathon, then I can play in great games like that.
“We needed nearly three hours and that would be a pretty good marathon time.”
Wozniacki took the first set with the first break at 6-5, but the second was a topsy-turvy affair with five of the 12 games finishing in a break – three to Wozniacki and two to Halep before the Romanian levelled.
Wozniacki turned the screw in the third to break her opponent when her 3-1 lead quickly became 5-1 and although Halep rallied to bring it back to 5-2, Wozniacki served out to convert her fourth match point.
Having lost the final in Auckland last January, but won in Kuala Lumpur in March, the 24-year-old will be bidding for her second title in 2015.
There was some consolation for Romania’s Halep, who will take over from Maria Sharapova as the second ranked player in the world on the back of her run to the Stuttgart semis on clay court.
The 23-year-old was competing in her fourth semi-final of the year after winning the Shenzhen, Dubai and Indian Wells titles, but had to deal with the distraction of a death threat on Thursday night which led to heightened security in Stuttgart.