The Serbian world No. 1 dropped the first set against the Argentine Juan Martin del Potro but then stormed back for a 4-6, 6-3, 6-2 victory at the London event.
He now goes on to Monday's championship match against Federer, who bounced back from being down a break in the first set and then cruised to a 7-6 (7-5), 6-2 victory over Andy Murray.
After losing the first set, Djokovic found himself trailing del Potro 2-1 in the second frame when he began to turn things around, breaking the Argentine on his fourth chance of the game and sixth of the match.
After that it was all Djokovic, who has won the season-ending event once previously, in 2008.
Meanwhile, Federer -- the two-time defending champion -- won 16-of-18 points while serving in dominating the second set.
The Swiss superstar will be trying for his seventh overall Tour Finals title and the 77th of his career, which would tie him with John McEnroe for third on the all-time list trailing Jimmy Connors (109) and Ivan Lendl (94) in the Open Era.
Federer and Djokovic have split four meetings this year.
Trader Joe's: Car crashes into Long Island store, injuring 11
Exploding whale video goes viral on Internet