Murray began the opening set in impressive fashion as he broke Federer to move 1-0 ahead, but the Swiss answered straight back to level it at 1-1.
Both players held their serves respectively to move level at 2-2, but three double-faults from Federer allowed the Scot to take a 3-2 lead in the opening set.
The set remained on serve from that point onwards, with Murray claiming the opening set 6-4 after 43 minutes.
The Scot began the second set dominating from the baseline and threw up six break points on the Federer serve, but rain broke up play as the roof closed around the players.
The Swiss answered back at the seventh time of asking to move ahead in the set, but Murray held his serve to level the match at 1-1 in the second set.
The match remained on serve at 2-2 in the second set, but Murray recovered from 0-40 down to break and move 3-2 ahead in the second.
A hold of serve from the Scot moved him 4-2 ahead, but Federer's powerful serving kept his hopes alive at 4-3.
Murray moved 5-3 ahead with a hold, but Federer responded with a serve to love to take it to 5-4. The match was then stopped again before the Murray serve due to rain on the surface.
However, the Scot served out the match in impressive form to set up a clash with Djokovic on Sunday.