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.

Mexico bounce Czechs out of World Cup with win
South Africa beat South Korea to reach World Cup knockout stage for first time
Qatar’s Assim Madibo gets 5-game ban for injuring Canada's Ismael Kone
Morocco earn comeback win over Haiti to reach last 32
Brazil heads into World Cup knockouts with win over Scotland
