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.

Clinical Sinner holds off wildcard Jodar to reach Madrid Open semis
LIV Golf touts 'strong momentum' despite New Orleans postponement
Baptiste's variety drags Sabalenka out of comfort zone in Madrid shock
FIFA to increase financial distribution to all 48 World Cup teams by 15%
Sabalenka stunned by Baptiste in Madrid Open quarter-finals
