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.

Romelu Lukaku makes Belgium's World Cup roster
France reveals World Cup roster; Camavinga, Chevalier left off
Punjab crack under pressure to leave IPL playoffs hopes in balance
Mbappe booed on return as Real Madrid beat Oviedo 2-0
