The Serbian world number one downed third seed Federer 6-1 6-2 3-6 6-3 in two hours, 19 minutes and will face either Andy Murray or Milos Raonic in Sunday's final.
It was the 45th meeting between the two greats with Djokovic now edging ahead of Federer 23-22 in their head-to-head duels.
The amazing Serb continued his recent domination over the 17-time Grand Slam champion and on Sunday, he will become the first man in the Open era to contest six Australian Open finals.
"I knew he was going to be aggressive and mix up the pace and try to come to the net, but I came out with the right intensity with great concentration and I executed everything perfect. But it was a battle in the end."
More From This Section
It will also be Djokovic's 19th Grand Slam final overall and he moves into equal-third place with Ivan Lendl on the all-time list of most appearances in major finals, which is headed by Federer.
He broke Federer's first service to 15 and then held his serve to lead 3-0, winning 12 of the first 14 points.
The Swiss third seed was broken again in the sixth game, netting a forehand with Djokovic in full cry.
Djokovic's 6-1 first set was his easiest opening-set win over Federer. He won 24 points to 11, with the rushed Swiss making 12 unforced errors.
Four-time winner Federer probed for a way back in, with the Australian crowd urging him on, and he broke Djokovic for the first time in the sixth game of the third set.
The Swiss was finally putting pressure on Djokovic and he claimed the third set on his third set point, to a thunderous roar on Rod Laver Arena.
Djokovic broke Federer for a fifth time in the match in a sensational eighth game of the fourth set, featuring a forehand return winner for the break, and he safely served out for the match in the following game.