Djokovic, who struggled physically with neck and shoulder problems during his quarter-final victory against Pablo Carreno Busta, let a two-set lead slip against the big-hitting Greek before regathering his form in the fifth to reach his 27th Grand Slam final.
Djokovic, bidding for a second French Open and 18th Grand Slam title, claimed a 6-3 6-2 5-7 4-6 6-1 victory after three hours and 54 minutes on Court Philippe Chatrier.
Tsitsipas is renowned shot-making skills but he was unable to break through the Djokovic wall for the first couple of sets.
The Serb trailed 0-40 in the opening game but he saved all three break-points before taking command of the opening set.
It was a similar story in the second set as Djokovic ripped through fifth seed Tsitsipas’ defences losing just two games.
The Greek threw the kitchen sink at the top seed in the third set, upping his game to finally break through Djokovic’s defences for the first time in the match when the Serb served for the match at 5-4, saving a match point.
Tsitsipas held serve in the next game before rocking Djokovic by snatching the set with a scintillating forehand that painted the baseline.
Djokovic battled back from 0-2 down to level in the fourth set, but he was unable to make his own breakthrough.
Tsitsipas held firm, saving 10 out of 11 break points, before sending the contest into a decider after the Serb’s attempted drop shot fell well short of the mark.
As the clock ticked past 10pm local time, Djokovic looked stunned, especially as he enjoyed a remarkable 215-1 record at Grand Slams after winning the first two sets. His only loss came here at Roland Garros to Jürgen Melzer in 2010.
The 33-year-old kept his composure and maintained his focus to earn a break of serve in the third game of the fifth. He consolidated his lead before racing away with the contest, hitting the mark with his third match point, to make it through to his fifth Roland Garros final and first since he won the tournament in 2016.