Roger Federer used a dominant service game to beat Dutchman Robin Haase 6-3 7-6 (5) in Montreal, setting up a Rogers Cup final against German Alexander Zverev.
Haase, playing in his first ATP World Tour Masters 1000 semi-final, did well to force a second-set tiebreak but Federer proved too much to handle as the Swiss fired down nine aces and dropped only nine points on serve.
Federer, whose five titles this year include the Australian Open and Wimbledon, credited a positive mindset for helping him extend his winning streak to 16 matches.
"Confidence can get you a long way, and if you're feeling fine physically and you are ready to fight mentally you have a lot of things in the bag," said the 19-times grand slam champion.
"And then the only thing that maybe is missing is practice, but sometimes practice is overrated. It's all about the matches at some stage."
Next up on Sunday for the Swiss right-hander, who is seeking his third Rogers Cup title after triumphs in Toronto in 2004 and 2006, is Zverev after the fourth seed advanced with a 6-4 7-5 win over Canada's Denis Shapovalov.
Federer owns a 2-1 edge against Zverev in head-to-head meetings, most recently a 6-1 6-3 win at Halle in June.
Zverev ended Shapovalov's magical week on his third match point when the 18-year-old, who had been the story of the tournament after a stunning run that included an upset win over world No.2 Rafael Nadal, sent a backhand wide.
Shapovalov, who was born in Israel and moved to Canada before his first birthday, had a great chance at 4-3 in the second set but failed to convert on his three break points.