The Austrian third seed’s 7-5, 6-7 (10/12), 7-6 (7/5) win ended Djokovic’s hopes of equalling Roger Federer’s record of six titles at the elite eight-man event.
The US Open champion will face either Rafael Nadal or Daniil Medvedev in Sunday’s final as he chases the second-biggest title of his career.
The 2019 runner-up, who forced the only break in the first set, faced an uphill battle psychologically after his missed chances in the second-set tie-break.
But he was quickly back in the groove and held his nerve to rally from 4-0 down in the final-set tie-break, winning six successive points to earn two match points and taking the second of those.
“It was for sure a mental battle,” said Thiem. “I got so tight in the second-set tie-break, first of all because to play these legends is always going to be something special.
“And then playing for a final here at the ATP Finals is also something very special. I thought after my first big title in New York maybe I’m going to be a little bit more calm but that was a mistake I guess.
“I was just as tight and nervous as before and it was so much on the edge, the match… I’m incredibly happy to be through.”
Thiem took time to settle at the start of the match, hitting a number of unforced errors, but found his rhythm and his single-handed backhand became an important weapon as the match wore on.
The third seed produced a searing forehand winner to set up the first and only break point in the 11th game of the first set and Djokovic netted with a volley.
The 27-year-old closed out the set impressively, lashing a backhand winner down the line before producing an ace.