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.

India thump Namibia ahead of Pakistan clash
Italy crush Nepal in maiden T20 World Cup victory
Dubai Duty Free Tennis Championships reveals major expansion plan
Sri Lanka crush Oman for second victory in T20 World Cup
Philippine's rising star Alexandra Eala to debut at Dubai Tennis Open
