Former world number one Williams, playing her first tournament in six months due to a chronic knee injury, ran out of steam against the unseeded Zvonareva, ranked 50th in the world.
In Saturday's other semi-final, fourth-seeded Katarina Srebotnik of Slovenia upset defending champion Patty Schnyder of Switzerland 4-6, 6-3, 7-6.
Zvonareva won the first five games of the match and broke Williams early in the second set to take complete control. The players traded break points twice during the rest of the set but the Russian finished off the match in the ninth game.
It will be the second final appearance in three years at this event for Zvonareva, who lost in 2004 to Lindsay Davenport.
Schnyder, the top seed, double-faulted twice during the tie-breaker, including on match point.
"Tie-breakers are like roulette," Srebotnik told reporters. "You take your chances and hope you're lucky enough to win them."
Ranked 26th in the world, Srebotnik reached her first final since September.
More from rediff