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.

Mumbai's IPL campaign fizzles amid Bumrah's barren run
Iran women soccer players thank Australian government for protection
Villa's Watkins looking to make late push for England World Cup squad
Former Arsenal, Juventus goalkeeper Manninger dies in road accident
French Open prize money increases, retiring players to be honoured
