The Serb world number one beat German Zverev 6-3 7-6 (7-4) at the O2 Arena in London.
Djokovic, seeking a record-equalling sixth title at the end-of-season tournament, was pushed much more in the second set but raised his level at the crucial time in the tie-break.
He will play Dominic Thiem in the last four on Saturday at 14:00 GMT.
US Open champion Thiem progressed as winner of Group London 2020 with Djokovic going through in second position in Group Tokyo 1970.
"I felt great. In the first set he had a couple of break-point chances and I managed to serve well in the important moments," said 33-year-old Djokovic.
"In contrast to the match against Daniil, I found the right shots at the right time. I have tremendous respect for Sascha, who is a great player and it is not easy to return 140mph first serves.
"It was anybody's game for most of the match."
Russian fourth seed Daniil Medvedev was already assured of topping the group after beating Djokovic on Wednesday, but there was no drop in his level as he beat Argentina's Diego Schwartzman 6-3 6-3 in their dead rubber.
After winning the Paris Masters last week, Medvedev continued his impressive form as he breezed through the group stage without dropping a set.
Medvedev, 24, will meet Spanish second seed Rafael Nadal - who is aiming for the first ATP Finals title of his illustrious career - in Saturday's second semi-final at 20:00 GMT.