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.

Sabalenka to face Rybakina in blockbuster Miami Open semi-final
Final World Cup ticketing phase is first-come, first-served
Japan's Sakamoto on pace for fourth world title in Prague
London Marathon weighs two-day race format from 2027
Gauff opens up on impostor syndrome ahead of Miami Open semis
