36 yaşındaki İsviçre, soyulmamış Hollandalı Robin Haase ile görüşme yapmak için 68 dakika içinde 6-4 6-4 kazandı.
Federer, kariyerinin üçüncü Rogers Cup galibiyetini ve 2017 sezonunun dikkat çekici altıncı unvanını hedefliyor.
Kanada'nın Denis Shapovalov diğer yarı finalde Rus Alexander Zverev'i canlandırıyor.
Federer, açılış setinde 4-4'lik ilk molayı garantiledi, sonra saniyenin başında art arda üç kopuş daha başarılı oldu.
19 kezlik Grand Slam şampiyonu Bautista Agut'a karşı oynadığı yedi maçın 16 setini de kazandı.
Federer "Bence burada Montreal'de agresif oynuyor" diyor Federer. Rafael Nadal'ın önümüzdeki hafta Cincinnati Open'da elde ettiği sonuçları en azından eşleyebiliyorsa kim sayı kazanacak?
"Artı ağda kendimi rahat hissediyorum, neden taban çizgisinden sıyrılmak yerine biraz zaman harcamak istemiyorum?"
Perşembe günü Shapovalov ve dünyanın bir numaralı Andy Murray tarafından kaburga sakatlığı nedeniyle elenerek sayıları iki olan Rafael Nadal, Federer'in dünya sıralamasında birinci sıraya girme fırsatı buldu.
He would need to win in Montreal and have an equal or better finish than Nadal at the in Cincinnati next week to become the world number one on 21 August.
"Now that Rafa is out I know I can make big strides, especially if I was to go further than the semis here. But it's all connected to great play," said Federer.
Haase, ranked 52nd in the world, fought back to beat Argentina's Diego Schwartzman 4-6 6-3 6-3.
Rising stars face off
Fourth seeded Alexander Zverev defeated South Africa's Kevin Anderson in straight sets 7-5 6-4 to set up a match of rising stars with Shapovalov.
Zverev, 20, is the youngest player ranked in the top 20 in the world and Shapovalov is the youngest since 1990 to reach a Masters 1,000 quarter-final.
Turnuvaya girmek için vahşi karta ihtiyaç duyan 18 yaşındaki Kanadalı, Fransız Adrian Mannarino'yu 2-6 6-3 6-4'lük üstünlükle geçti.
Shapovalov ayrıca Fransız Açık Şampiyonu Nadal'ı 10-10 mağlup ederek çeyrek finale girdi ve ikinci turda eski ABD Açık galibi Juan Martin del Potro'yu üzdü.