Federer had a much easier time in the semifinals, beating Alexandr Dolgopolov of Ukraine 6-3, 6-1 and putting himself in position to win a fifth career title at Indian Wells. Djokovic is a two-time winner here.
Federer leads their rivalry 17-15, having beaten Djokovic two weeks ago in the semifinals at Dubai. Before that, Djokovic had won three straight times over the Swiss star.
"It's always tense. It's always emotional. It's always close," Djokovic said. "I look forward to it."
Playing for 2 1/2 hours in near 90-degree heat, Djokovic struggled with the big-serving Isner, who beat the Serb in the semis two years ago before losing to Federer in the final.
"With that serve, obviously, he can win against anybody on a good day," Djokovic said. "I thought I returned really well today and allowed myself to have a bunch of opportunities on his service games."
Djokovic had a chance to win in two sets, breaking Isner to go up 5-4 and then again at 6-5.
But the American broke back at love for a 6-all tie, and then dominated in the tiebreaker.
"When you get to the tiebreaker with John Isner, whoever you are, you're not a favorite," Djokovic said. "I just tried to hang in there, stay mentally tough when I lost the second set, and played a great third."
With two-time Grand Slam winner Rod Laver watching from the shade, Djokovic broke Isner for a 3-1 lead in the third. Djokovic survived a break point in the next game and held for a 4-1 lead.
Isner called for the trainer a second time in the match to work on an area above his left knee before he got broken to trail 5-1, missing two straight forehands. Djokovic came up with his own big serve on match point that Isner couldn't return.
"It prevented me from being able to go after my serve like I wanted to, but that's not the reason I lost," Isner said about having tightness in his knee. "I am disappointed, but at the same time, I had a good week here."
Isner had eight aces to Djokovic's seven, and the American managed 31 winners, just one more than Djokovic.
While Djokovic had to sweat out his victory, Federer was coolly efficient on the hot day in the desert, firing seven aces and connecting on 72 percent of his first serves in the match that lasted barely an hour.
"Having the fire and wanting to win every single match and in the practice trying to improve as much as you can, I've got the good balance right now, so it's very encouraging," Federer said.
Federer never faced a break point on his serve while breaking Dolgopolov four times, including a seven-deuce game to go up 4-1 in the second set. Dolgopolov had a chance to win that game four times, but each time his unforced error brought it back to deuce.
The Ukrainian's forehand error finally gave Federer the game. The Swiss star won the final four games, breaking Dolgopolov at love on his backhand error to close it out.
"I just missed too many shots today, the shots that you don't miss in these matches," Dolgopolov said. "My concentration was going away for maybe one, two points every game, and you can't afford to have that in these matches."
Federer will try to win his second title of the year in Sunday's final. He's coming off a victory two weeks ago at Dubai, and his 19-2 match record this year is his best start since he began 23-2 two years ago. He won at Indian Wells from 2004-06 and again in 2012.
A year ago at Indian Wells, Federer injured his back during a match and took nearly a month to feel better. After Wimbledon, he re-injured his back and found himself questioning everything, leading to an uneven year for the sport's once dominant player.
Back in the desert once again, Federer feels like a new man.
"I'm just playing more freely overall and with more confidence because I can get to more balls without thinking," he said. "I can wake up in the morning without feeling sore. I can go to bed not feeling like I hope I feel better tomorrow. I don't have these thoughts going through my mind and I'm not worried every single minute of the day."