Saturday's defeat was just the second in 45 matches this season for Williams, who has won the first three grand slams of the year and will be favourite for a fourth when the U.S. Open kicks off at the end of the month.
The unseeded Bencic, who also beat former world number ones Caroline Wozniacki and Ana Ivanovic in Toronto, wore a look of disbelief after the 18-year-old's forehand winner whizzed past Williams to seal the match.
Bencic dropped her racket and covered her face with her hands before the tears started to flow.
Swiatek beats Kasatkina to reach fourth round
"I can't believe it now," said Bencic said. "The first set was just too fast for me, I think. But then I adapted to the game in the second set, and then I was just fighting. I mean I had 5-1 (in the third set). I'm so happy. It's amazing."
Bencic will play for title against Halep, who beat Italian Errani 6-4 6-4 in the other semi-final.
"I'm not thinking about the title right now," said Bencic. "I have to recover from today."
There looked to be little danger for Williams as she blazed to a 5-1 lead in the opening set and took it in just 33 minutes.
Bencic played much better in the final few games of the set, however, and carried that momentum into the second, where she took control after the score was tied at 3-3.
Bencic built a 5-1 lead of her own in the decider but Williams then won three games in a row. The Swiss composed herself and broke the 33-year-old American to win the match.
Simona Halep - WTA Toronto 2015
Image credit: LaPresse
Halep, playing her first event since a shock first round exit at Wimbledon, was happy to escape with a straight sets win in one hour, 35 minutes.
"I'm completely dead now, it was a very tough match," said an exhausted Halep, who dropped to the court when Errani's return sailed long. "She played amazing, she was running everywhere for all the balls.
"I did everything I could to finish in two sets because in the third one I don't know what would happen."
'He's a dreamer' - Tsitsipas doesn't realise he's won match, Wilander reacts
'First strike in' - Cilic and Rublev in big-hitting opening rally