Thiem, 26, won 3-6 6-4 7-6 (7-3) 7-6 (7-4) to reach a first Melbourne final.
The Austrian fifth seed said “it was an unreal match” and he will now look to win his first major on Sunday, after losing the past two French Open finals.
Djokovic is overwhelming favourite to win a record-extending eighth title on Rod Laver Arena, and 17th Grand Slam.
The 32-year-old has lost just three matches in the past 10 Australian Open tournaments.
German seventh seed Zverev, 22, was bidding to reach his first Grand Slam final but instead, it his good friend who will play for the title.
“To reach the Australian Open final is unreal,” said Thiem, who will bid to become only the second Austrian player – after Thomas Muster at the 1995 French Open – to win a Grand Slam.
“Two tie-breaks, so tough and so close, it was almost impossible to break him.”