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.

Pakistan survive Dutch scare in T20 World Cup opener
Arqoub Al Sadeera Race to conclude 10th Al Salam Cycling Championship
Open Masters Games Abu Dhabi welcomes over 25,000 athletes
Ekaterina Alexandrova rallies to advance to Abu Dhabi finals
Sooryavanshi's record 175 guides India to Under-19 World Cup glory
