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.

Ten-man Newcastle beat Man United; Arsenal go 7 points clear
New Zealand crush South Africa to reach T20 World Cup final
Dave Rennie becomes first Pacific Islander to lead All Blacks
FIFA offering $12 tickets to World Cup Play-Off Tournament
Resurgent Wolves stun Liverpool, Everton enjoy home comfort
