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 eight times, moved into his 17th Grand Slam final where he'll face either home hope Jo-Wilfried Tsonga or Spanish compatriot David Ferrer.
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 supervisor onto the court to rage over the court conditions as he prepared to serve at 7-8.
Also Read
Nadal pounced, moving to three match points and clinched victory when Djokovic, who ended with an ugly 75 unforced errors, hit wild and long.
"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."
Djokovic was furious that his demands for the court to be watered were ignored.
"If one player says yes to watering of the court and the other says no, in the end whose opinion has more value?"
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.