Djokovic reached Sunday's title match at the $4.5 million ATP Masters 1000 event, where he will take on Rafael Nadal, by defeating Federer 6-3, 3-6, 6-2 Saturday to extend his match winning streak this season to 17.
"I am playing the best tennis of my life," said Djokovic, who won the Australian Open in January.
Djokovic, who won here in 2008, won 11 consecutive points in the third set to break open the match and post his third victory over 16-time major winner Federer in the past three months.
"My approach to matches against Roger is maybe different than it was in the past two years," Djokovic said of Federer, who still leads their overall series 13-9.
"Right now I have more self-belief when I step on the court against him. Before it was, 'Let's hope that I can play well.'"
Djokovic, who is the first player to start the season with 17 wins in a row since Pete Sampras in 1997, moves to Sunday's final, where he will face world number one Nadal, who beat Juan Martin del Potro 6-4, 6-4.
"I have played Nadal many times," Djokovic said. "I want this trophy as much as he wants it."
Federer is now 18-3 on the season with all three defeats coming at the hands of Djokovic, who clinched Saturday's victory on a second match point when the Swiss fired a forehand service return long.
With the win, Djokovic moved into the second ranking spot, dropping Federer to third.
"It makes me feel very happy. It's the crown for my achievements this year," he said.
Djokovic, 23, hammered three aces in the two-hour, six-minute match in front of a near-capacity crowd of about 15,000 on the main stadium court.
The turning point in the match was when Djokovic blitzed Federer for 11 consecutive points in the middle of the third set to turn a 2-2 deadlock into a 5-2 lead.
Djokovic broke Federer's serve three times in the final set after Federer won the second set.
"He was going for the shots more today," Djokovic said. "The surface is slower than it was in Dubai when we played the last time and he was trying to use that kick serve. So we were testing each other."
Former three-time Indian Wells champion Federer also made some terrible errors, like when he double faulted on the last point of the fifth game in the third set.
He was up 40-15 with a chance to hold serve and make it 3-2 in his favor but instead the double fault cost him the game and gave Djokovic a 3-2 lead as he went on to win the final four games of the deciding set.
Federer, who also lost the doubles final with Swiss compatriot Stanislas Wawrinka against Alexandr Dolgopolov and Xavier Malisse, said he would get over the setback of losing to Djokovic again.
"I'm not a guy who's disappointed for a long time," Federer said.
"What is important is I know that I gave 100 percent out there. If I feel like the effort I put in wasn't the best, or if I could have done so many things differently and I didn't use them, then it would be very frustrating and disappointing. But it's not the case anymore for me."
Nadal reached the final by snapping a three-match losing run to Argentina's del Potro.
"I think I did well. I played a few good games," Nadal said. "I think he had a few more mistakes than usual. That helped me a little bit.
"But in general, I think I played my best match in Indian Wells this year by far."