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.

Zimbabwe stun Australia to stay unbeaten in T20 World Cup
Arsenal miss chance to go six points clear with draw at Brentford
India thump Namibia ahead of Pakistan clash
Italy crush Nepal in maiden T20 World Cup victory
