Reigning champion Nadal was outplayed for seven games as he fell 5-2 behind but reeled off five games in a row, including saving a set point, as he bids to equal Bjorn Borg's record.
Federer, who won the last of his 16 grand slam titles at the 2010 Australian Open, started with a confident service game on a humid day on court Philippe Chatrier.
Playing all-out attack Federer snatched his opponent's serve on his fourth opportunity when Nadal surprisingly spun a short forehand into the net.
"Roger, Roger!", the 15,000 centre court crowd chanted as the 2009 champion comfortably held for 3-0 courtesy of a couple of thumping aces.
Looking rattled, Nadal had a blister powdered by the trainer during the changeover at 5-2 down.
Third seed Federer came out all guns blazing in the eighth game, eeking out a set point on Nadal's serve which the Spaniard saved as a Federer drop shot floated just wide.
It proved a crucial moment as Nadal suddenly found his range with his forehand to get Federer on the run.
Federer's first serve let him down when he served for the set at 5-3 and Nadal pounced to break back when Federer netted a volley when his opponent, at full stretch, unleashed a stunning forehand.
Hitting deeper and deeper, Nadal broke again in the 11th game as Federer's level began to dip and he sealed the first set with a huge crosscourt forehand winner after 62 minutes.