Zvonareva's 13-match winning streak at the tournament came to a dramatic end when she was deducted a point in the 10th game of the second set for swearing.
The No. 3-ranked Russian, who had earlier been warned for smashing a racquet, argued with umpire Jennifer Zhang and called for tournament supervisor Jimmy Moore.
But the decision stood and left Hantuchova with a match point that she duly converted to seal the win in two hours, 16 minutes.
"She (the umpire) said that I cursed on the court," Zvonareva said. "First of all, whatever she heard was not what I said. But it didn?t matter she shouldn't have done that.
"But it's OK. It happened."
Zvonareva had also been rattled by a line call during the first set tiebreaker that put Hantuchova in charge at 5-2. The two-time defending champion won only one more point before losing the set in 67 minutes.
"The whole tournament was difficult for me," Zvonareva said. "Everyone starts talking about me winning the third time. I was tired physically and mentally. My focus wasn't there."
Hantuchova, seeking her fourth career title and first since 2007, will play eighth-seeded Sara Errani in Sunday's final.
"Definitely I'm very hungry (for the title). It's about time, it's been four years," Hantuchova said. "It was a really good fight (against Zvonareva). I have to say it's one of the best matches I've played in the last few years."
Errani beat fellow Italian Roberta Vinci 6-1, 6-4 in the other semifinal to reach her first final since losing to Dinara Safina in Portoroz in 2009.
Palop commits to SevillaHantuchova wins Generali Ladies opener