The effort by the 20-year-old Spaniard paid off with a 1-6, 6-1, 6-4, 7-6 (4) victory Sunday, spoiling Federer's bid for a fourth consecutive Grand Slam championship.
"This is my best final against the best player in history," Nadal said.
He earned his second successive Roland Garros title and extended his record clay-court winning streak to 60 matches. He also prevented the top-ranked Federer from becoming only the third man to hold all four major titles at the same time.
Nadal closed the victory with a swinging volley for a winner, then collapsed to his back and rolled over, covered in the clay he loves.
"He's a fighter and he's a grinder, and he deserves to win here," Federer said.
Federer's first loss in eight Grand Slam finals came at the only major he has yet to win, and at the hands of his nemesis. Nadal also won when they met at Roland Garros last year in the semifinals. Federer fell to 0-4 against Nadal this year; he's 44-0 against everyone else.
During changeovers, French fans tried to inspire Federer with chants of "Ro-ger! Ro-ger!", but they were answered with chants of "Ra-fa! Ra-fa!" Nadal earned the cheers at the end, winning the first meeting of the two top-seeded men in a Roland Garros final since 1984.
With his unsurpassed retrieving skills, the Spaniard kept running down balls in both corners to extend points. And the left-hander kept pulling his heavy, high-kicking forehand crosscourt to break down Federer's backhand, his weaker side.
Waiting to be introduced before the match, Nadal bounced like a boxer preparing for a prize fight. But it took him awhile to really start swinging.
He lost 16 of 18 points during one stretch, and played 35 minutes and 46 points before he won a game after falling behind 5-0.
Federer couldn't sustain the fast start. Content to duel from the baseline — a questionable tactic against the king of clay — Federer had 51 unforced errors to 28 by Nadal.
In short, Federer looked flat, frustrated and even fragile, remarkable for a player who had won 27 consecutive Grand Slam matches.
The match began to turn with Federer serving at 0-1 in the second set. He took a 40-love lead and appeared to win the next point, but the chair umpire overruled a line call and ordered the point replayed, and Nadal rallied to break for the first time.
Nadal pulled ahead in the third set. He saved four break-point chances to hold for 2-all, then broke in the next game on four errors by Federer, including a blown overhead, and served out the set from there.
In the fourth set, Nadal was two points from the title serving for the match at 5-4, 30-15, but Federer rallied with some of his best tennis to break. He won one point when Nadal slid into the net chasing a shot, and another with side-to-side-to-side retrieving that rivaled the Spaniard's best.
Nadal made another save of his own in the corner for a 5-2 to lead in the tiebreaker and served out the final two points, extending his winning streak in finals to 14 in a row. He improved to 24-0 on clay this year, and he's 14-0 in two appearances at Roland Garros.
He became the youngest man to win consecutive championships at Roland Garros since Bjorn Borg in 1974-75. His reward: about $1.2 million. Federer received $600,000.