Isner edged Djokovic, the defending champion, 7-6 (9-7), 3-6, 7-6 (7-5) in the day's first semifinal on the hard courts at Indian Wells Tennis Garden.
The 26-year-old American used 20 aces and a 135 mph serve in battling the Serbian star over a 2-hour, 45-minute match, and will now face Federer in a bid for his fourth ATP World Tour singles title.
Federer, meanwhile, will be seeking his 72nd career title after overcoming, windy, wet and cold conditions to best Nadal in straight sets 6-3, 6-4.
Match point was delayed for 3 minutes due to a light mist before Federer put the contest away, beating Nadal for the 10th time in 28 all- time meetings.
The Indian Wells final will be a rematch from the Isner-Federer Davis Cup match last month in which the American upset Federer in Switzerland.