The two-time defending champion made it into another final at the tournament following a high-class display in a 6-4 6-4 win.
The Scot, who has never lost in Shanghai, returned superbly to set up a title match with Novak Djokovic, the man he beat to win the US Open last month.
The world number three kept his focus amid some confusion at the start of the second set. He saw six break points go begging and was told the roof would be closed as light rain started to fall.
As the roof was closing, Federer went on to hold his serve, but the rain quickly stopped, the roof reopened before it could shut fully and the Swiss then had no answer to Murray's power and accuracy.
The rain returned before Murray served for the match and the roof was closed completely this time. A substantial delay led to both players going off court, but it could not derail the Scot as he closed out the match on his return.
He started like a train, breaking in the opening game of the match with some booming shots.
Federer, though, responded in kind, levelling the scores after his opponent had fought back from 0-30 down to 30-30 only to surrender the game with a weak unforced error.
Murray had another chance to break in game three, but the Swiss dug in to hold.
The world number one was threatening to find his rhythm, but Murray was also looking strong and a huge forward winner which wrong-footed Federer helped him get back to 2-2.
And he then raced into a 0-40 lead before a Federer double fault gave him a second break.
Watch: Murray beats Federer in China semi... More Videos
Four successive holds gave Murray the chance to serve for the set at 5-4 and he did so with little fuss.
The game of the match came at the start of the second set, both for drama, confusion and controversy.
Murray carved out six break points thanks to some superb returning and stunning passing shots, only for Federer to save each one.
At deuce number seven, Federer pointed out to the umpire drops of rain were starting to fall and claimed the court was becoming slippery.
Federer got his wish for the roof to be closed, much to Murray's apparent frustration, perhaps a reminder of the Wimbledon final when he lost to Federer under the Centre Court roof.
Play continued while the roof was closing and Murray got a seventh break point, only for Federer to save it at the end of a truly incredible, marathon point.
Both players looked certain to win it at one stage only for their opponent to somehow stay alive before Federer finally ended it with a cute drop shot which Murray, for once, was just unable to get to.
And the Swiss then sent down an ace to hold for 1-0.
As the rain relented, Murray got the good news the roof would open again and he made it 1-1.
Both players held for 2-2 before the Scot got his nose in front again, breaking for a 3-2 lead.
Murray consolidated his advantage to go 4-2 in front and maintained that break.
There was yet more confusion and a long delay while the roof was closed properly before Murray was finally given the chance to serve out the match, which he did on his first match point.