Federer, playing some of the best tennis of career at age 35, needed only 21 minutes to take the first set before winning a second-set tiebreak to set up an all-Swiss final in the California desert.
Federer, the ninth seed, will face countryman and third seed Stan Wawrinka for the title on Sunday.
Wawrinka earned his first Indian Wells final with a 6-3 6-2 semi-final demolition of Pablo Carreno Busta of Spain.
Wawrinka converted his fifth break point in the third game of the second set to take a 2-1 lead and pulled away.
"It is an amazing result to be in the final here, especially in Indian Wells. I am really happy with the way I'm playing," Wawrinka said on atpworldtour.com. "I was mixing it up, so it was not easy for him to find a solution.
"Most of the time I know when I start to win the matches in the tournament, I start to get confidence, the good feeling with the ball, I know I play better and better.
"Normally semi-final, final, I always play some good matches. It doesn't mean I always win, but I know that I am going to play some good tennis."