Second seed Serena Williams was pushed all the way by brave Russian teenager Maria Kirilenko before reaching the third round with a 4-6 6-2 6-4 win.
Williams was out of sorts in the opening set allowing her unheralded opponent to move ahead.
Kirilenko was overpowered in the second but managed to move a break up in the final set, before Williams came back, winnning with her second match point.
The American will play Silvija Talaja of Croatia for a place in the last 16.
Williams said she had endured a "bad day at the office" after scraping through.
"I couldn't keep a ball in. I think I made a thousand mistakes. I don't have time to tell you everything that went wrong," she said.
"I told myself to keep fighting but I felt I was down all the time."
She added: "Maria played really well and has a well-rounded game, but it was all down to me making lots of errors."