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.

Hyderabad's bowling depth, Delhi's late calm lift IPL tempo
Lionel Messi's brace helps Inter Miami slay Rapids in front of huge crowd
Real Sociedad beat Atletico Madrid on penalties to win Copa del Rey
Cunha strike earns Man United hard-fought 1-0 win at Chelsea
One driver dead, six injured in Nuerburgring race crash
