Septuple vainqueur dans l'Ohio, Federer, 37 ans, a cédé la première manche au tie-break après s'être pourtant procuré deux balles de set à 6-5 sur le service de Wawrinka.
Le joueur aux 20 titres du Grand Chelem a cru voir le scénario se répéter dans le tie-break de la seconde manche en gâchant deux nouvelles balles de set à 6-4, mais il a fini par conclure sur sa troisième opportunité.
Brièvement interrompue par un ciel grondant, la troisième manche a vite tourné à l'avantage de Federer, qui disputait son second duel de la journée après sa victoire au 3e tour contre Leonardo Mayer.
Le vétéran suisse a pris deux fois le service de Wawrinka et s'est imposé après 2h19 de combat.
Federer jouera samedi sa place en finale face à David Goffin, qui s'est montré solide face au 3e mondial Juan Martin del Potro (7-6 (7/5), 7-6 (7/4)).