Belinda Bencic stunned Serena Williams to claim a place in the Rogers Cup final at the world number one’s expense in Toronto.
The Swiss world number 20, who was 5-1 down at one point in the first set as it looked like Williams was going to cruise through, rallied back to win 3-6 7-5 6-4.
With the second set finely poised at 3-3, the 18-year-old found a way to tighten up her game, cutting out errors, just as more started creeping into Williams’ play.
From 5-5 in the second set Bencic turned the screw, winning seven of the next eight games to turn the match on its head and give herself a 5-1 lead in the deciding third set.
Williams managed to claw it back to 5-4, but Bencic would not be denied her shock victory.
Simona Halep now awaits her in the final, having beaten Italian world number 17 Sara Errani 6-4 6-4 in the other semi.
Halep and Bencic have only met once before, with Halep claiming the victory at Wimbledon last year.