Murray came away with a 6-2, 7-5 victory over Djokovic, who was the three-time defending champion in the event. Federer, who will be Murray's opponent in the final Saturday, won the tournament four times in five years from 2003-07.
Federer, the No. 2 seed, reached the final with a dramatic comeback in the second-set tiebreaker, edging eighth-seeded Juan Martin del Potro 7-6 (7-5), 7-6 (8-6). Del Potro had leads of 5-0 and 6-2 in that tiebreaker but Federer stormed back with six straight points.
Federer didn't face a break point on the day but was also 0-for-6 in his break opportunities against del Potro in the 1-hour, 23-minute match.
Murray, seeded third, won seven consecutive games against Djokovic, who hadn't lost in the tournament since 2008. Murray's string sent a 2-2 match into one in which Murray was up a set and a break.
Djokovic evened the set with a break in the ninth game but Murray sealed the win with a 12th-game break.
Murray, at 8-6, is one of the few players with a winning record against Federer. They haven't played since 2010 when three of their four matches were tournament finals. Murray won two -- both Masters events -- but Federer won the Australian Open final against Murray that year.