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.

Desert Vipers down Gulf Giants to secure win in Super Over thriller
Fernandes double helps Man United to 4-1 win as Wolves' misery continues
Real Madrid handed shock home loss as Celta Vigo spring surprise
Dubai Capitals overpower Abu Dhabi Knight Riders by 83 runs
Mid East finished strong with victory against Arabia
