The five-time champion clinched a 6-3 7-6 (7-4) win over the German as he wrapped up his place in the last four at London's O2 Arena in one hour and 36 minutes.
With three semi-final spots already decided, Saturday's (AEDT) match was a winner-takes-all showdown to see who would be the last player to progress from the group stage.
Djokovic cruised through the first set but required a tie-break to overcome his opponent in a tense second set as Zverev briefly threatened a fightback.
The 33-year-old Serbian, who won the ATP Finals in 2008, 2012, 2013, 2014, 2015, will play Dominic Thiem in his semi-final on Sunday (AEDT) with Rafael Nadal taking on Daniil Medvedev in the other match.
World No.1 Djokovic had beaten Zverev three times in their past five meetings before this one and began the contest in commanding fashion.
Djokovic breezed through his opening service game, producing a superb drop volley, before he took control of the set with a key break.
Djokovic had managed just a solitary break point in the whole match during a defeat to Medvedev on Thursday (AEDT), but when offered an early chance on Zverev's serve he nailed a crosscourt passing shot before his opponent double faulted.
The early mistake cost world No.7 Zverev, who was unable to find a way back in as a resolute Djokovic saved two break points at 4-2.
Djokovic then closed out his service games, as he sealed the first set with a backhand down the line which the 23-year-old Zverev had no answer for.
The second set was a much tighter affair, with both players saving break points early on, before taking charge of their respective services games to force a tie-break.
Zverev took a 2-0 lead but Djokovic got himself level and then secured the crucial mini-break with a classy backhand winner to make it 5-3.
At 6-4 Djokovic held his nerve and produced a powerful forehand to confidently reach the last four in an emphatic manner.