The 26-year-old Serbian had not won a title since she completed a 6-3 6-0 victory over Spain's Anabel Medina Garrigues in Bali at the end of 2011.
Against the seven-times Grand Slam champion Ivanovic, at times, looked every bit the former top player in the world as she worked the tall American around and hit winners down the tramlines.
The former French Open champion, who had not beaten the 33-year old American since they met at the 2008 Australian Open, had romped through the clash until she was serving for the match at 5-4 in the second set when Williams seemingly came alive.
"Very tough. Venus showed again what a great sport she is and what she has done in the past," Ivanovic said.
"At the end of the second set I made a couple of errors that I hadn't made up until that point," the Serb added of her yips in failing to close out the match in straight sets.
"But I just decided I would try to enjoy it and play and move forward and be aggressive."
Ivanovic, who had two match points earlier in the second set, broke in the first game of the third set and never relinquished that advantage.
She virtually assured herself of the title in the eighth game when she served successive aces and then fought back from two break points and sealed the win in the 10th when Williams blasted a forehand long.
"Congrats to Anna, she played so well," said Williams, who had been given a walkover to the final after her compatriot Jamie Hampton was forced to withdraw from their semi-final with a right hip injury.
"This was amazing preparation, I should have been here years ago. It's all I could hope for," she added of her confidence ahead of the season opening grand slam at Melbourne Park that begins on January 13.