Djokovic appeared to be fighting with a knee issue that led him to retire from the previous French Open, but was able to emerge a 6-3 6-6 (7-3) victor.
The Serbian started brightly on Court Philippe Chatrier, grabbing a break in the fourth game that proved vital, with Djokovic able to hold serve to finish out the first set.
However, Tsitsipas blasted out of the blocks in the second, hitting a double break to jump into a 4-0 lead. But the former world number one was not ready to concede.
With the Greek in striking distance from taking the meeting to a third-set thriller, Djokovic rebounded to take the next three games on the spin to tie the game at 5-5.
Djokovic and Tsitsipas would retain their respective serves, meaning a second-set tie-break would decide whether the encounter would enter a third set at Roland-Garros.
But it would be the Serbian who would go to the semi-finals, winning three games in a row to finish a stunning display.
Djokovic will face Lorenzo Musetti for a place in Sunday’s final after the Italian overcame incumbent champion Alexander Zverev in straight sets.
Djokovic has now made four singles semi-finals at the Olympics: twice as many than any other player since tennis returned to the Summer Olympics program in 1988.
The Serbian shined on serve, collecting six aces throughout the encounter to Tsitsipas’ three, while saving four of the six break points he faced.