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.

Munoz strike sends Colombia into World Cup Round of 32
Qatar's sports minister, Madibo visit Canada's injured Kone
Budimir gives Croatia win to eliminate Panama in Group L
England fail to break down Ghana in goalless draw
Ronaldo guides Portugal to big win over Uzbekistan
