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.

F1 legend Mika Häkkinen turns brand ambassador for Only Legends Drive UAE
Guardiola vows to speak up for victims of global conflicts
Arsenal beat Chelsea 1-0 to reach League Cup final
Top-10 finishers in LIV events to receive word ranking points
Barca advance to Copa Del Rey semis as Albacete’s run ends
