Unseeded youngster Stefanos Tsitsipas saved a match point before beating Kevin Anderson to set up a final against Rafael Nadal at the Rogers Cup.
The Greek, who turns 20 on the day of Sunday's final in Toronto, overcame the South African 6-7 (4-7) 6-4 7-6 (9-7).
The world number 27 also beat Dominic Thiem, Novak Djokovic and Alexander Zverev in previous rounds.
In the women's final, Romanian world number one Simona Halep will play American Sloane Stephens in Montreal.
Halep beat Australian Ashleigh Barty 6-4 6-1, while Stephens was a 6-3 6-3 winner against Ukraine's Elina Svitolina.
'I can't believe what just happened'
Tsitsipas, who will be the the first unseeded finalist in Canada since Germany's Nicolas Kiefer in 2008, will be contesting his first ATP Masters 1000 final after his win over Anderson.
"I didn't even have this in my head," said Tsitsipas.
"I thought winning a couple of rounds would be amazing but I'm in the final already. I can't believe what just happened,
"I didn't aim that high and I think with low expectations I managed to pull out my best tennis."
World number one Nadal beat Russia's Karen Khachanov 7-6 (7-3) 6-4 to reach his 116th ATP final.