The 20-year-old Serbian, playing in the third Grand Slam final in her career, won the French event for the first time.
She took a 4-1 lead in the first set before the 13th-seed Safina came back for a 4-4 tie. The Russian also won the first point in the second set before Ivanovic seized control.
The victory for Ivanovic was worth $1.55 million.
"There were a few mental games out there today, so I was really happy that in key moments I managed to stay strong and calm, in the second set, especially," Ivanovic said.
Recently retired Justine Henin, the top-ranked women's player early this season, beat the second-seeded Ivanovic in last year's final and was at center court Saturday to give Ivanovic her winner's trophy.
"I tried but I just didn't have any more of the fire that I had in other matches," Safina said.