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.

Head, Carey push England to the brink in Adelaide
Friday’s ILT20 game shifts from Sharjah to Dubai
Morocco beat Jordan 3-2 after extra time to clinch Arab Cup
Abu Dhabi Knight Riders defeat Gulf Giants to seal second straight win
FIFA cancels Arab Cup third-place match
