The great Spaniard went into the contest having won 105 of his previous 107 matches on the Parisian clay, losing only to Robin Soderling in the fourth round in 2009 and Djokovic in the last eight six years ago.
He had won all 13 of his previous semi-finals but, in a 58th match between the pair that was on a par with almost any that came before, Djokovic found the answers to the greatest challenge in sport to win 3-6 6-3 7-6 (4) 6-2.
It is the world No 1 who will take on Stefanos Tsitsipas in the final tomorrow bidding for a 19th grand-slam title and to become the first man in the Open era to win each title at least twice.
Earlier, Tsitsipas faltered but refused to crumble as he battled past Alexander Zverev in five sets and into his first grand slam final.
The Greek, who has won more matches than any other player in 2021, has looked like a man on a mission all fortnight at Roland Garros and he appeared to be easing to victory when he opened up a two-set lead.
But Zverev seized the momentum and turned the tables completely, winning the third and fourth sets as he threatened a repeat of last year’s US Open semi-final, when he came from two sets down to beat Pablo Carreno Busta.
Tsitsipas was 0-40 down in the opening game of the deciding set but he dug deep to hold and that proved the catalyst for a revival and a 6-3 6-3 4-6 4-6 6-3 victory.
Zverev saved four match points at 5-2 in the fifth, three with big serves and one with the bravest of drop shots, but Tsitsipas kept his nerve brilliantly to serve it out, holding his arms aloft in delight and relief.
The 22-year-old, the first Greek player to reach a slam final, said through tears as the crowd roared in support: “All I can think of is my roots, where I came from outside Athens. My dream was to play here. My dream was to play on the big stage of the French Open one day.
“It was nerve-racking, it was so intense. Fifth set, first game, I think it was the most important game of the fifth set. I came back, I stayed alive. I had the crowd with me. They were cheering me on, they were giving me their energy.
“I still felt there was hope. I still felt there were opportunities for me to fight back and do something. Your only job is to go out there and fight, and that’s what I did.
“It was very difficult, very emotional. I went through a lot of phases of emotional breakdowns but this win means a lot. This win is the most important one of my career so far.”
Tsitsipas had fallen three times in slam semi-finals, first at the Australian Open in 2019 then at last year’s French Open and February’s Australian Open.
He pushed Djokovic to five sets at Roland Garros in October and, after winning a maiden Masters title on clay in Monte-Carlo, went into this tournament as a clear third favourite behind the world No 1 and Nadal.
He also boasted a 5-2 winning record over Zverev but the German has been in good form on the clay as well and, after recovering from two sets down in his opening match in Paris against Oscar Otte, had coasted through the draw.
This was a massive opportunity for both men and there was a huge amount of tension on display, with Tsitsipas winning the opening set despite hitting only one winner compared to 11 unforced errors.
This was an astute rather than spectacular performance from the 22-year-old, who exploited Zverev’s weaknesses and stopped him stepping into the court on his favoured backhand.
Tsitsipas won six games in a row from 3-0 down in the second set but his relative passivity came back to haunt him as Zverev began to cut out the errors and take control.
The German had a furious row with umpire Renaud Lichtenstein over the official’s decision not to replay a point following a corrected line call at 5-3 but did not allow that to distract him.
Tsitsipas’s nerves were all too evident in the fourth set, the fifth seed unable to swing freely while Zverev was now looking very at home on Court Philippe Chatrier.
But Tsitsipas managed to step up his aggression just when the match seemed to be getting away from him, and clinched victory after three hours and 37 minutes.