Hong Kong's Fu looked set to lose 6-3, but snatched the ninth frame and went on to make two excellent breaks to knock out world number two Selby. Fu won the second ranking title of his career at the Australian Goldfields Open in July and is now just two wins away from his third.
Selby won the opening frame with a 58 clearance then came from 74-0 down to take the second with runs of 40 and 35. Fu hit back to lead 3-2 with top breaks of 59 and 88, then it was Selby's turn to win three frames in a row, compiling runs of 50 and 79 as he went 5-3 up.
But the Leicester player failed to capitalise on two match-winning chances in frame nine, and although he laid a tough snooker on the last red, Fu hit it at the third attempt when trailing by 34 points, and later cleared the table to pinch the frame 61-60. That proved the turning point as the Asian ace fired in breaks of 84 and 112 to win in style.
"I cued well today but I could have done better on some of the crucial shots," said Fu. "I have been in form recently and got some good tournament results, however I think I should have played more carefully against Mark. I know what I can do but I wasn't concentrating during the first couple of frames.
"I managed to stay calm when I was trailing 5-3, and hoped to recover step by step. There were lots of chances I didn't take. I didn't worry about these wasted chances and managed to level the match and then go on and win it.
"This will be my first semi-final at a ranking tournament in China. I lost first round matches many times and my best performance here was quarter-finals. I have made a breakthrough this time and hopefully I can do better tomorrow. I really want to have a good run here because I have a lot of Chinese fans. Unfortunately I let them down most of the time. I hope my momentum goes on."
Perry is enjoying his best season in recent years and earned a place in the last four of a ranking event for the first time since the 2008 World Championship with a 6-1 thumping of Ryan Day. A break of 72 gave Day the opening frame, but after that Perry showed his class with runs of 70, 134, 115, 71 and 103 as he won six frames in a row.
"I saw how well Ryan played yesterday so I expected a really tough game today," said Perry, who won an Asian Tour event in June. "He has beaten me a few times in the past. I knew I'd have to play well today, and luckily I did.
"This season is going really well. Mentally I feel strong and I'm confident. It's nice to be back in the semis. Anything this week is a bonus because I should have lost my first match, I was 5-1 down to Jamie Jones and came back to win 6-5. I got out of jail and it has gone well for me since then.
"I just hope I can keep this form going, if so I've got every chance. Ding is the big favourite but everyone in the semis has got a chance."
Ball by ball scoring and results from tournaments