Sharapova, the fourth seed, will play the Serbian Jelena Jankovic, who defeated Andrea Petkovic of Germany 7-6, 6-1.
Petkovic took the court for that match with her right leg heavily strapped after suffering a slight tear of the meniscus in her knee.
With the help of anti-inflammatory medication Petkovic got off to a strong start, but a few wayward shots in the tiebreaker doomed her chance to take the first set and she could not keep pace in the second. Jankovic broke her to open the second set, and again to take a 3-0 lead en route to the victory.
In the final, Sharapova will be trying for a second tournament title this season to go with a triumph in Rome.
The three-time grand slam champion reached the final here last year, falling to Kim Clijsters.
"I love playing on this court," Sharapova said. "There's something about it."
But the fourth-seeded Sharapova got off to a sluggish start against Zvonareva, who is ranked second in the world.
A welter of unforced errors by Sharapova helped Zvonareva break serve twice to take a 5-2 lead. Sharapova won just 11 points in the first seven games.
She managed to break Zvonareva to prolong the set, but Zvonareva broke back to pocket the frame.
After a courtside pep-talk from her coach Thomas Hogstedt, Sharapova was able to turn things around and secure her finals berth in two hours and tow minutes.
She adopted a more aggressive style to start the second set and broke Zvonareva in the opening game.
Under pressure, Zvonareva double-faulted to lose the second set and another double-fault from Zvonareva gave Sharapova a 3-1 lead in the third.
Two double-faults from Sharapova saw Zvonareva narrow the deficit to 4-3, but Sharapova recovered and punched a forehand winner down the line to take a 5-3 lead.
She served it out without drama, capping the match with another strong forehand and throwing her arms in the air in delight.
The men's and women's tournament is the last major event before the US Open begins in New York on August 29, but injuries and some early upsets had left the women's draw wide open.
Clijsters withdrew with an abdominal strain that will also keep her from seeking a third straight US Open title.
Venus Williams skipped the tournament because of a virus while Serena Williams pulled out on Wednesday with a toe injury.
Third-seeded Victoria Azarenka withdrew with a hand injury and on Friday Jankovic reached the semis when China's Peng Shuai withdrew from their quarter-final clash with an ailing left hip.