Nadal, the third seed, took his Paris record to a staggering 58 wins from 59 matches after recovering from 4-2 down in the deciding set to clinch victory after 4 hours and 37 minutes.
The 27-year-old Spaniard, bidding to become the first man to win the same major for the eighth time, moved into his 17th Grand Slam final where he'll face either home hope Jo-Wilfried Tsonga or Spanish compatriot David Ferrer.
Friday's win was Nadal's 20th in 35 career clashes — and 13th from 16 on clay — against Djokovic who still needs a French Open title to become only eighth man to complete a career Grand Slam.
In a dramatic and controversial final set, Djokovic broke for 1-0 before Nadal levelled in the eighth game after the Serb had been handed a time violation and then lost a point when he collided with the net as he put away a smash.
Djokovic even summoned the tournament referee onto the court to argue his case that he had been wronged by umpire Pascal Maria and continued to rage as he prepared to serve at 7–8.
Nadal pounced, moving to three match points and clinched victory when Djokovic, who ended with an ugly 75 unforced errors, hit wild and long.
"It's a very special win for me and congratulations to Novak -- he's a great champion and he is going to win here at Garros one day," said Nadal, who had lost the pair's only other five-setter, the record-setting 2012 Australian Open final.
"When I was serving for the match it was against the wind so I knew that it would be a tough game.
"It was a similar match to the one in Australia in 2012 and he won. This time it is me that won and that is what makes sport so big."
On Sunday, Nadal will be appearing in his ninth final since returning from a seven-month injury lay-off.
"During these seven months out of the game there were some low moments, but everybody supported me and there was a lot of positive energy," added the Spaniard, who has already claimed six titles in 2013.
"David and Jo both reached the semis without losing a set so they must be playing fantastic."
Nadal took the first set in 51 minutes with the opener turning on the sixth game when Djokovic appeared to tweak the back of his thigh as he chased down a drive from the Spaniard.
The top seed was broken in the next game when he hit long. Nadal confirmed the break with a hold to love before taking the set when the Serb went wide on a forehand return.
A clearly unsettled Djokovic was struggling with his timing and footwork and a telegraphed dropshot allowed Nadal to thunder another passing shot for a break and a 3-2 lead in the second set.
But the world number one dug deep and finally carved out his first break points in the next game to level at 3-3, a sweet drop volley setting up the opportunity and backing it up for a 4-3 lead with an ace.
Suddenly, it was Nadal's turn to feel the heat as Djokovic broke again for 5-3 courtesy of a huge forehand after pinning the Spaniard at the back of the court.
Djokovic levelled the semi-final when Nadal could only bury a backhand in the Roland Garros dust.
A controversial line call by umpire Pascal Maria gave Nadal a break for 2-0 in the third set, despite replays showing Djokovic's ball was in, and he backed it up with a love-game for 3-0.
Now it was Djokovic's turn once again to wilt in the 30-degree heat, falling a double break down at 4-0 before having to save two set points in the sixth game.
Nadal shrugged off a penalty point for a time violation to serve out the set in the seventh.
The Spaniard's brutal forehand was in control and another breakthrough in the seventh game of the fourth set gave him a 4-3 edge.
Djokovic was not finished, hitting back immediately for 4-4 but then undoing all his good work by letting Nadal back into the contest with a sloppy service game which surrendered another break.
The drama took yet another twist as the Spaniard failed to serve out the match, despite being 30-15 up in the 12th game, sending the fourth set into the thrilling tie-breaker through which a rejuvenated Djokovic romped.