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.

First-half goals send Mexico to comfortable 2-0 victory over Ecuador
Mbappe scores twice as France ease past Sweden 3-0 to reach last 16
Serena and Wawrinka go down fighting at Wimbledon
Norway edge Ivory Coast to advance at World Cup
Australia knock West Indies out to reach Women's T20 World Cup final
