But Rosol, who shocked Spaniard Nadal at the same stage two years ago, could not maintain the charge and went down 4-6 7-6(6) 6-4 6-4 in two hours 44 minutes on Center Court.
Nadal was behind a set and a break of serve and had to save a set point in the tiebreak. But he showed all the dogged determination of his 14 grand slam triumphs to turn the tide.
"I tried to keep fighting and to wait for my moment," the French Open champion said.
"At 4-3 down (in the second set) I did some amazing returns, and that was very important because it would be very difficult to be two sets down with his big service."
The pair produced some electrifying tennis, with the tall Czech firing down unreturnable serves and Nadal fighting his way back into the match by luring 52nd-ranked Rosol into baseline rallies.
Nadal, punching the air at winners and shouting "vamos" as he countered Rosol's power, found his range and fired up his forehand in the last two sets.
But he said he was not out for revenge for past humiliations.
"I never play for revenge. Every match is a different match. My goal is not to beat Rosol but to play as well as I can in the tournament," he said.
After an exhausting fortnight on clay, Nadal said he was always going to struggle to settle on grass, and Rosol gave him some timely practice before his third-round clash with Mikhail Kukushkin of Kazakhstan on Saturday.
(Editing by David Goodman)