In the 50th instalment of one of sport's greatest rivalries, the Serb shrugged off a tentative start to reinforce his recent dominance, showing no mercy to the Swiss maestro in a 7-6 (7/1), 6-4, 6-3 win.
He will play either fifth seed Dominic Thiem or seventh-ranked German Alexander Zverev in Sunday's final, but it will take a monumental effort to prize another title from the 32-year-old.
Of the seven Melbourne finals Djokovic has made, he has won them all.
If any extra motivation was needed, winning on Sunday will see the Serb reclaim the number one ranking after Rafael Nadal was sent packing in the last eight.
"Respect to Roger for coming out tonight when he was obviously hurt and not even close to his best in terms of movement," said defending champion Djokovic, who is into his 26th Grand Slam final.
"He started well at the beginning and I was pretty nervous. It was very important for me to win that first set. Mentally I relaxed after that."
It was the fourth time Djokovic had beaten Federer at the semi-final stage in Melbourne after doing the same in 2008, 2011 and 2016.
Federer, the 2018 champion, came into the match carrying a groin injury that he picked up in his five-set, come-from-behind quarter-final win against Tennys Sandgren.
He was seen around Melbourne Park before the match with tape on his upper right leg and there were even rumours that he might pull out.
But that is not in the 38-year-old's nature -- he has only ever given up four walkovers in his long career -- and the show was on.
Power and finesse
Djokovic was clear favourite after beating the third seed in every Grand Slam meeting since Wimbledon 2012, but in their 50th career clash it was Federer who initially set Rod Laver Arena alight.
The opening game, on Federer's serve, lasted six minutes in an indication of what might be in store.
Then against the odds the 38-year-old, the oldest man in a Grand Slam semi since Jimmy Connors in 1991, broke Djokovic on his first service game with an unbelievable backhand passing shot.
The edge didn't last long with the Serb immediately hitting back to even it up.
But the power and finesse of the Federer game was troubling Djokovic, who was on the back foot and was broken once more to go 4-1 behind.
Federer had three break points to make it 5-1, but Djokovic dug deep to fend them off as he clawed back, breaking once more as the Swiss was serving for the set.
It went to a tiebreaker which the second seed dominated to pull off a remarkable turnaround in a set that Federer threw away.
Federer took a medical time at the end of it, apparently for a back issue, and he wasn't moving as freely in the second set.
But he clung on until he fluffed an easy shot at the net to hand Djokovic set point at 4-5 and the Serb cracked a top-quality crosscourt volley to go two sets to one in front.
Djokovic was pumped and Federer rapidly running out of steam.
When the Swiss star was broken to go 4-2 behind in the third, there was no way back as his rival extended his winning record over him to 27-23.