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.

Error-prone Swiatek goes down to Rybakina in WTA Finals
DP World Tour Championship gears up for action-packed week
India win maiden Women's World Cup title after Verma-Sharma show
World's oldest living gold medallist Charles Coste dies at 101
Barcelona return to winning ways with 3-1 victory over Elche
