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.
Pistorius testifies he didn't consciously pull trigger when he shot girlfriend
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards