The Serb survived a blistering start by No. 3 seed Federer and eventually won the opening set after a brilliant tiebreak.
It was a huge blow to Federer, who had nothing to show for his early brilliance, and in the second set, he had to scrap simply to stay in contention until Djokovic eventually went up a gear and broke to go 2-0 ahead.
The Swiss legend looked spent, and Djokovic remained completely in control in the third. The defending champion eventually sealed victory in two hours, 18 minutes on Rod Laver Arena.
He will face either Dominic Thiem or Alexander Zverev in Sunday's final as he aims to win an eighth title at Melbourne Park.
There was huge expectation surrounding Federer and Djokovic's 50th competitive meeting, and the opening exchanges did not disappoint.
The first game lasted six minutes and included four deuces. Federer saved two early break points and served three aces all just to hold for a 1-0 lead.
He then produced a sumptuous backhand pass to break immediately for 2-0, only for Djokovic to break straight back.
A third consecutive break went Federer's way thanks to some Djokovic-like returning of serve, and the Swiss consolidated for a 4-1 lead by holding with three more aces.
Federer, 38, was playing supreme tennis, hitting winner after winner, and it seemed inevitable he would serve out the set at 5-3 ahead.
But all of a sudden, his serve disappeared. He double-faulted, missed a relatively easy shot at the net and went wide and long to be broken to love.
The momentum had turned in the blink of an eye, and when Djokovic won the ensuing tiebreak in comprehensive fashion, Federer found himself a set behind despite having hit eight aces and 26 winners.
The 20-time Grand Slam champion spent the second set simply trying to stay in touch while Djokovic won 20 of 24 points on his own serve.
Federer, meanwhile, had to scrap to hold his own serve.
And he had no answer when Djokovic upped his game at 5-4 ahead, breaking to win the second set with an impeccable touch at the net that left his opponent helpless.
Federer has performed innumerable minor miracles on a tennis court in the last two decades, but there was never any prospect he would fight his way back into Thursday's semi-final.
In the sixth game of the third set, Djokovic again went up through the gears with some fearsome returning and a devastating crosscourt winner to break for 4-2, and two more routine holds put him into the final.