Following up his win over the top-ranked player in the semifinals of the Tokyo Olympics, Zverev beat Djokovic 7-6 (4), 4-6, 6-3 at the same stage of the ATP Finals on Saturday.
"Every time we play against each other, it's very high level,'' Zverev said. "This year we played each other five times. ... Every time we played for multiple hours and it was very physical.''
The result means Djokovic can't match Roger Federer's record of six titles at the season-ending event for the top eight players. At least not this year.
Instead, Zverev will play second-ranked Daniil Medvedev in Sunday's final.
"He's the greatest player of all time and I think people forget that sometimes,'' Zverev said of Djokovic, who shares the record of 20 Grand Slam titles with Roger Federer and Rafael Nadal.
Medvedev, the US Open champion, beat first-time qualifier Casper Ruud 6-4, 6-2 earlier as he seeks to defend his title in the first edition of the tournament in Turin -- after 12 years in London.
Medvedev has won his past five meetings with Zverev, including a round-robin match earlier this week that was decided in a third-set tiebreaker.
Zverev won this event in 2018.
Djokovic committed a series of uncharacteristic baseline errors to hand Zverev the decisive break midway through the third set.
Zverev then held his nerve, saving a break point, before serving a slicing ace down the T on his first match point.
"I just had the one very bad game in the third set -- three forehand, one backhand unforced errors, really from pretty easy position,'' Djokovic said.
The tone of the match, though, was set in the first set, after Zverev saved a set point at 4-5.
In the first-set tiebreaker, a challenge from Zverev forced Djokovic to hit a second serve and resulted in a double fault. Then a backhand drop shot from Djokovic clipped the net and hopped over, giving Zverev time to run it down and reply with a sharply angled forehand cross-court winner.
At 5-4 in the tiebreaker, Zverev crushed a backhand winner up the line to conclude a long rally, then produced a big serve out wide on his first set point that Djokovic couldn't return.
In September at the US Open, Medvedev ended Djokovic's bid for a calendar-year Grand Slam by beating the Serb in the final to lift his first trophy at a major.
Dictating play from the start against Ruud, Medvedev improved to 9-0 at the ATP Finals since going 0-3 in his 2019 debut.
An inside-out forehand winner from Medvedev that concluded a 32-shot rally led to an early break in the opening set. Then Medvedev began varying his game more with forays to the net and drop shots as he again broke midway through the second set.
Ruud was broken again when he interrupted a point to challenge a call, which held up under review, handing Medvedev a chance to serve out the match.
Medvedev, who didn't face a single break point and won 11 of 15 points at the net, finished it off with a perfectly executed serve-and-volley on his first match point.
Ruud, who also lost to Djokovic in straight sets in his opening round-robin match, said that getting beat soundly by the top two players "makes me want to seek revenge and become a better player for the next year.''