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.

Atletico hit back to hold Arsenal in cagey Champions League semi-final first leg
Lucky loser Potapova makes history with Madrid Open semi-final run
Britain's Draper to miss French Open with ongoing knee injury
Canadian government allocates $145 million for World Cup security
Clinical Sinner holds off wildcard Jodar to reach Madrid Open semis
