The Swiss, 36, won 6-3 7-6 (7-5) in Toronto to extend his winning streak to 16 matches and close in on a third Canadian Masters title.
Second seeded Federer will clash on Sunday with German Alexander Zverev who ended the Cinderella run of 18-year old Canadian Denis Shapovalov with a 6-4, 7-5 win in the other semi-final. "I think it really shows how I've improved mentally, along with just finding my game at the right moments". "I still have to work really hard every day".
"I'm very excited to be back in the finals", Federer said. And his forehand, which he pummelled for winners with regularity in his first four wins of the tournament, came undone on too many occasions.
When match point landed wide, Zverev told Shapovalov during handshakes at the net that the two are sure to meet again and will likely be rivals for many years. "Even though, Zverev is a more experienced player than Shapovalov at this stage".
The talented German most recently met Federer in the Halle Open final in June and was thoroughly outclassed and will need to be at his absolute best if he wants to equal the former world number one's title tally. "Sometimes he tends to just roll the ball in and use the big serve, or he uses a slice a lot and comes in".
The 19-time Grand Slam victor Federer is seeking his 27th Masters 1000 title and his third Canadian Masters crown after wins in 2004 and 2006.
Shapovalov, who became the youngest player ever to enter a Masters 1000 semifinal, beat 2009 US Open champion Juan Martin del Potro and top-seeded Spanish star Rafael Nadal during his phenomenal run.
But just as Shapovalov had done all week, he came up with some of his best stuff while his back was pinned firmly against the wall.
In doubles semifinals, seventh-seeded Rohan Bopanna of India and Ivan Dodig of Croatia defeated sixth-seeded Raven Klaasen of the Netherlands and Rajeev Ram of the United States 4-6, 7-6 (8), 11-9; and fifth-seeded Pierre-Hugues Herbert and Nicolas Mahut of France downed eighth-seeded Oliver Marach of Austria and Mate Pavic of Croatia 7-5, 6-3.