The seven-time champion returned to the court, having earlier banished Leonardo Mayer, to defeat his fellow Swiss 6-7(2) 7-6(6) 6-2.
The momentum decisively swung in Federer’s favour when a lightning storm caused the match to be suspended for 21 minutes after the second set. The world number two soon broke after the resumption, his first breakthrough of the match, before charging through the final set.
Federer's Olympics withdrawal raises more doubts about what lies ahead
"It's quite unusual to stop for lightning," Federer said.
"I didn't know if it meant the end of the night or that we would come back. I got my energy back for the third set, a momentum shift was good for me."
Federer, who is the top seed in Cincinnati after world number one Rafael Nadal withdrew, will meet David Goffin in the last four. The Belgian beat Juan Martin del Potro 7-6(5) 7-6(4).
The other semi-final pits Novak Djokovic against Marin Cilic, with the Serb overcoming defending champion Grigor Dimitrov and Milos Raonic on Friday.
Murray, Djokovic in, Williams, Federer out - who's playing tennis in Tokyo?
'Grand Slams are everything' - Djokovic ready to join Federer, Nadal on 20 majors