Roger Federer stayed on course for his third Rogers Cup title by beating Robin Haase in straight sets on Saturday.
The world number three, who turned 36 earlier in the week and is back in action for the first time since winning a record eighth Wimbledon title, reached the final in Montreal with a 6-3 7-6 (7/5) win.
Federer, who will battle with Rafael Nadal at the Cincinnati Masters next week to replace Andy Murray as world number one, faces Alexander Zverev in Sunday's final.
Zverev ended 18-year-old Canadian Denis Shapovalov's stunning run with a 6-4 7-5 victory in the second semi-final.
Federer has not won the Rogers Cup since 2006 but moved a step closer to regaining the trophy by seeing off 30-year-old Haase, who was appearing in his first ATP Masters semi-final.
Victory for Federer on Sunday would earn him a 94th ATP Tour title of his career - levelling Ivan Lendl in second place in the Open Era list - and sixth of a remarkable season.
"I have reached levels that I never thought I would be able to reach, winning so many titles," Federer told the ATP's website.
"Each title you can add is like a thrill. I am playing tennis to try to win titles.
"Lendl is a legend of tennis. He reached incredible records. He was extremely consistent. He won many titles.
"It's fantastic and cool that I'm able to reach his level."
Awaiting him in the final is 20-year-old Zverev who beat fellow young star Shapovalov.
World number 143 Shapovalov's incredible run in his home country had seen him beat Juan Martin del Potro and Rafael Nadal but Zverev proved a step too far.
The fourth seed had to battle to come through in one hour and 43 minutes and remains on course for a second successive ATP title following his Citi Open success last week.