Zvonareva's 13-match winning streak at the tournament came to an end shortly after she was deducted a point for swearing in the 10th game of the second set. Zvonareva also had been rattled by a line call during the first-set tiebreaker that put Hantuchova in charge at 5-2.
The No. 3-ranked Russian, who had been warned for smashing a racket, 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.
"She said that I cursed on the court," Zvonareva said of the umpire. "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."
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."