Despite being ranked and seeded higher, Ivanovic came into the final with a disadvantage - Williams had won eight of their nine previous meetings. But Ivanovic got a far better start, winning five games in a row en route to the first set and eventually finding herself a game away from the title at 62 53.
Ivanovic even had match point in that game - but Williams has seven Grand Slams to her name for a reason, and she clawed her way back into it, reeling off four games in a row to sneak the set, 7-5.
But the most critical juncture of the match happened right then and there as Ivanovic broke at love in the first game of the third set, and despite facing break point in her next two service games never let that advantage go. The two held the rest of the way until the No.2-seeded Serb won, 62 57 64.
"It's amazing," Ivanovic said. "Coming into this week I didn't really have any expectations. I didn't even think about making the finals or winning it. I just tried my best, and I felt very comfortable here.
"Today was a great match. Venus is always very tough - she's a great champion and showed that again today. I'm just happy that after losing that second set I managed to stay calm and close it out."
"Today for me it was all about fighting, because I didn't feel I was playing my best," Williams said. "I fought as hard as I could no matter what the score was, but I just ran into a better player today."
The triumph gave Ivanovic the 12th WTA title of her career, and her first since winning the Tournament Of Champions at the end of the 2011 season when it was held in Bali. She is now 12-5 in WTA finals.
"Every victory is special, this one even more so because it's been a while since I've won a tournament," Ivanovic said. "I've worked really hard for this and many times I've been in a position to win another title, so to come through in a final like this against such a good player is obviously a great feeling."
Williams was playing in the 72nd WTA final of her career and now has a 44-28 record in those.
The doubles title went to Sharon Fichman and Maria Sanchez, who followed their earlier upsets of No.1 seeds Andrea Hlavackova and Lucie Safarova and No.4 seeds Mona Barthel and Megan Moulton-Levy with a 26 60 104 victory against No.3 seeds Lucie Hradecka and Michaella Krajicek in the final.
Both Fichman and Sanchez came away with their first WTA titles of any kind.