After shock wins over Rafael Nadal and Juan-Martin del Potro, Shapovalov's dream run continues, coming from a set down to defeat Adrian Mannarino 2-6 6-3 6-4.
The junior Wimbledon victor and tournament wild card entered the week with three ATP-level wins and has added four more so far.
"I think those young players don't quite know what to expect, and (neither) do I, because nobody quite knows", said Federer. It would have been hard to turn around the match without them. Rafa took a lot out of me.
'I'm happy I'm playing as well as I am this year on the match courts.
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.
Federer still looks the man to beat, however, following a dominant display against Bautista Agut.
Bautista Agut's serve finally came under concerted pressure in game seven, but Federer surprisingly misfired with a pair of backhands as the Spaniard held firm.
It should be noted that Federer is bidding to capture his first trophy in Montreal and his third overall in Canada.
"I came from vacation, did some fitness, saw how I was feeling and said, 'You know what, I practiced so much the a year ago, let's go play some matches'". It's going to be a little bit of a change to me.
"Every time this year when it has been raining I've had a great tournament, so I thought this must be luck".
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 in a match during which he fired down nine aces and dropped only nine points on serve.
"Either way it's big for either of us".
Shapovalov's stunning form was the biggest story of the day, especially fighting back from a set down against the French world number 42.
"It's a good race and it's exciting for tennis".