Nineteen-year-old Bianca Andreescu will face Williams in the final of the Rogers Cup.
The unseeded home favourite beat American Sofia Kenin in two sets, 6-4 7-6.
She's spent much of the past year out with a shoulder injury but gained attention with her Indian Wells triumph in March.

Switzerland blank Algeria, reach round of 16 for 4th straight World Cup
Portugal survive late drama to beat Croatia
Anisimova and Fritz through as Americans sparkle at Wimbledon
Spain outclass Austria 3-0 to ease into World Cup last 16
Swiatek, Zverev power into Wimbledon round three
