The Russian world number five, defending champion on the clay in the Spanish capital, was the latest big name to fall after grand slam winners Justine Henin, Maria Sharapova and Svetlana Kuznetsova lost their first-round matches.
In a topsy-turvy encounter, Safina and Zakopalova, the world number 88, each claimed seven breaks of serve but the 28-year-old from Prague dominated the tiebreaks, winning the first 7-1 and the second 7-3.
Safina, who slipped from three to five in the updated rankings on Monday, has lost in the Roland Garros final the past two years and has yet to claim a grand slam title despite rising to the top of the rankings last year.
A pumped-up Serena Williams had to draw on all her battling qualities to get past Vera Dushevina into the third round, coming back from a set down and saving a match point for a 6-7, 7-6, 7-6 success.
The American world number one, who won her 12th grand slam title at January's Australian Open before injury sidelined her for three months, looked to be on her way out when the unseeded Russian held a match point at 6-5 in the second set.
Berating herself and appealing to watching coach and father Richard Williams, she clawed her way back and took the deciding set despite having a long treatment break for what appeared to be right thigh and lower back problems.
BELLOWING DELIGHT
She squandered one match point with a wild backhand at 6-4 in the third-set tiebreak but a ninth ace on the next point prompted a bellow of delight from the pink-clad 28-year-old after almost three and a half hours of play, the longest match of her career.
"When I shout like that it's just to get energised," Williams, who is on course to meet Russian sixth seed Elena Dementieva in the last eight, told a news conference.
"I really try to get myself going. I need energy and I need emotion to help me play better," she added.
Without giving further details, she said she hoped her injury was not serious.
"I definitely wasn't playing my best tennis and I was far off from playing well but after (more than) three hours I thought I had better win.
"I really wanted to win today because I really wanted to get some matches under my belt," she added.
Serena's sister Venus, the fourth seed, had a much easier passage into the last 16 when she beat Russian Vera Zvonareva 7-5, 6-3.
World number two Caroline Wozniacki, who lost to Safina in last year's final, looked to have recovered from a recent ankle injury and brushed aside another Czech qualifier Petra Kvitova 6-4 6-2.
In other first round action, eighth-seeded Australian Samantha Stosur edged past Argentine Gisela Dulko 7-6, 7-5 and 16th seed Nadia Petrova beat Russian compatriot Elena Vesnina 4-6, 6-2, 6-3.
Serena upset by Zakopalova
Dinara Safina wins Slovenia Open
Serena Williams retains her Australian Open title
Venus and Serena Williams win US doubles crown
Serena Williams fined $175,000 for US Open rant