Federer ended the giant-killing run of Ukrainian Alexandr Dolgopolov when he cruised to a 6-3 6-1 victory in a one-sided semi-final that lasted just a tick over an hour.
Then Djokovic succeeded in blunting the booming serve of John Isner to beat the American 7-5 6-7(2) 6-1 and join Federer in Sunday's championship match.
It will be the 33rd time overall and the ninth time in a final that the pair have locked horns. Federer holds a 17-15 lead in their head-to head matches and they are tied 4-4 in finals.
The Swiss master has already won the Indian Wells title four times and made it through to a fifth final without dropping a set in the California desert this week.
Relaxed and super confident after winning his 78th singles title in Dubai earlier this month, Federer pounced on Dolgopolov from the outset, breaking him once to snatch the opening set.
"I was ready physically, mentally," said Dolgopolov.
"I wasn't nervous much, but I wasn't sharp enough. My concentration was going away for maybe one, two points every game, and you can't afford to have that in these matches."
The Ukrainian had beaten three higher ranked players, including world number one Rafa Nadal, to reach the semis but was powerless to stop the 32-year-old Federer, who fired down seven aces in a brilliant serving performance.
"(It was) tough conditions for both of us," Federer said in a courtside interview. "I think I really served well when I had to and that allowed me to take more chances.
"Alexandr's had a wonderful tournament so it's really a big win for me today. I was going for it and I served a lot of aces, it was one of the best serving performances of my career."
Later, at his news conference, Federer said he was in a good frame of mind, having made his third final this year.
"Now it's just a matter of keeping that up, taking the right decisions not to overplay, not to underplay, and enjoy yourself. Because at the end of the day, it's also very important," he said.
"But having the fire and wanting to win every single match you go out there and in the practice trying to improve as much as you can, I think I've got the good balance right now, so it's very encouraging."
Isner upset Djokovic in the semi-finals at Indian Wells two years ago but the Serbian was better prepared this time.
The key to beating the 6ft 10in (2.08metre) Isner has always revolved around how his opponents cope with his devastating serve.
The wind had died down shortly after Federer wrapped up his victory over Dolgopolov and Djokovic had to save three set points on his serve in the 10th game of the opening set.
But in the following game, Djokovic made his move, breaking Isner's serve for the first time then serving out the set.
Djokovic twice had the chance to serve out the match in the second but faltered each time as Isner forced a tiebreak, which he won to set off a deafening roar in the stadium .
In the deciding third set, it was all Djokovic as Isner began to struggle with fitness, and the Serbian seized his opportunity.
"He's definitely the best server in the world right now so it's never easy against John," said Djokovic.
"I should have closed it out in the second set but I didn't and he played an amazing tiebreaker.
"It was only fair that it went to a third set because I got lucky in the first set. He should have won the first set and I should have won the second."
Sunday's women's final will be contested between Poland's Agnieszka Radwanska and Italian veteran Flavia Pennetta.
- Sports & Recreation
- John Isner
- Alexandr Dolgopolov