Federer swept aside third seed Djokovic in emphatic fashion as the world number two produced his fourth successive straight sets victory at the end-of-year event at London's O2 Arena.
The Swiss star will try to land a fifth Tour Finals title on Sunday and, in the process, gain a measure of revenge over Nadal, who has been the sport's dominant force at his expense this year.
Nadal, who defeated Andy Murray in a three-set thriller earlier on Saturday, has already taken the Wimbledon and French Open titles from Federer this year, as well as stealing the number one ranking from him.
Among their 21 career meetings there have been some incredible encounters, including the 2008 Wimbledon final won by Nadal. This is just their second match this year and it is the perfect way to finish the ATP season.
Federer said: "It's been a great tournament so far, having not lost a set and beaten so many good players. Today was another great match.
"I'm really looking forward to playing against Rafa tomorrow. Who wouldn't?
"He's a wonderful player. He's proven himself that he can play on any surface now. The ones who still call him a clay court expert, they still don't know much about tennis.
"I'll try to take it to him, play aggressive, attack his second serve and see how it goes."
Djokovic added: "He was playing unbelievable from the first moment. He deserved to win. He was the better player.
He's been playing really well in this tournament. I think this is definitely the best tennis he has played throughout the whole year."
There was no doubt Federer went into his semi-final as favourite and he stamped his authority over proceedings from the start.
After holding serve to love, the Swiss won four successive points from 40-15 to break Djokovic.
The last of those was a gift, a double fault from the third seed, who was battling just to get a foothold in the match.
The sixth game brought four more break points for Federer. Djokovic dug deep to pull it back from 0-40 but a stunning Federer winner set up another chance, and this time the Serb netted a volley.
Five points later the set was over, with Djokovic surely wondering what he could do to stop Federer in this form.
The Serb could at least draw on recent memories of a superb fightback against the 16-time grand slam champion, when he saved two match points to triumph in the semi-finals of the US Open.
And he began the second set in determined fashion, holding comfortably for the first time and then forcing a break point with a superb forehand return.
This time it was Federer's turn to make an error on a crucial point, the 29-year-old netting a volley he would have expected to make.
The Swiss' timing was suddenly a bit off but he was still playing some fantastic shots and he set up a chance to break back in the fifth game, which he took when Djokovic guided his passing shot wide.
Federer had three chances to make it four games in a row but Djokovic, who surely knew a break would effectively make it curtains, hung on to move 4-3 ahead.
The pressure was relentless from Federer as he fashioned another two break points in Djokovic's next service game, and this time he took one, powering a forehand return down the line.
That left the second seed serving for the match, and he never looked like making a mistake, polishing off victory in an hour and 20 minutes.