By Barry Wood
The Serbian won 6-1 7-5 and will face Spain's Anabel Medina Garrigues in the final on Sunday, her 24th birthday.
Medina Garrigues progressed when Sabine Lisicki of Germany retired with a back injury with the Spaniard leading 6-3 4-6 4-0.
Ivanovic made a perfect start, giving up just three points in the opening four games as her aggressive baseline play left her Russian opponent reeling.
After claiming the first set, Ivanovic broke for 1-0 in the second and then held three points for a 3-0 lead before Petrova finally managed to work her way into the match.
As Ivanovic failed to maintain her formidable performance, Petrova settled and engaged her opponent in spectacular rallies which several times led to Ivanovic throwing herself to the ground in search of a winner.
Three consecutive breaks put the players level at 3-3 and Ivanovic then had to fight off a set point at 5-4, firing an impressing backhand winner down the line.
"I played really well from the beginning," Ivanovic told reporters. "Then that game at 2-0 (in the second set), she really raised her game and went for more shots and made less errors and was serving bigger.
"Not breaking her then was kind of a turning point for her a little bit and then I played a bad game to lose my serve. That was crucial and then we had a bit of a fight."
Lisicki looked flat right from the start against Medina Garrigues and midway through the second set she was clearly in pain. She left the court for several minutes for treatment after breaking to lead 4-3.
When she returned, Lisicki won two of the next three games to take the match into a third set but, after earning just two points in the first four games, she quit at 30-30 in the fifth.
(Editing by John O'Brien and Clare Fallon)