The world number one defeated Czech seventh seed Tomas Berdych 6-3, 7-5, 6-3, claiming a place in an eighth Roland Garros semi-final and sixth in succession.
But the 29-year-old Serb, who will face Dominic Thiem of Austria for a place in the final, came perilously close to being kicked out of the tournament in the second game of the third set.
Frustrated at missing a break point, the Serb went to smash his racquet into the ground but it slipped out of his grasp before it flew into the backwall on Philippe Chatrier Court.
Had it hit the nearby line judge, who was forced to take evasive action, Djokovic would have been disqualified.
Not surprisingly, he offered a speedy apology for his actions to chair umpire Eva Asderaki Moore and escaped with a warning for racquet abuse.
Djokovic is a three-time runner-up in Paris and is bidding to become just the eighth man to win all four majors.
Thursday’s quarter-final was played out in a damp chill where temperatures slumped to 12 degrees on Court Philippe Chatrier.
But it didn’t stop the Serb from claiming a 24th win in 26 meetings against Berdych and his 11th in a row.
Djokovic raced through the first set with breaks in the seventh and ninth games before stretching out to a 4-2 lead in the second.
Berdych broke for the first time to get to 3-4 but Djokovic restored his advantage in the 12th game for a two sets lead.
The two men exchanged breaks in the first two games of the third before Berdych became angry over the deteriorating wet conditions.
On the resumption, Djokovic broke for 5-3 and took victory when Berdych dumped a service return into the net.
Djokovic was playing for the third day in succession after a washout on Monday and just two hours of action on Tuesday.
If he is to win an elusive French Open title, the top seed, who is also the Wimbledon, US and Australian Open champion, will have to play five days in six although he will start against Thiem as the favourite having won both their previous matches.
Friday’s other semi-final will see second seed Andy Murray take on Swiss third seed and defending champion Stan Wawrinka.