Micheal Ferland scored his first goal with the Canucks, J.T. Miller and Bo Horvat scored, and Thatcher Demko made 34 saves for Vancouver (4-2-0). Josh Leivo scored the only goal of the shootout in the sixth round.
The Canucks trailed 3-1 midway through the second period but won on the road for the first time this season (1-2-0).
"We fought back hard," Horvat said. "A lot of the guys, it just shows the character in our room right now. Last year, I don't think we had enough of those. To get our confidence going early and to come back against a great hockey team like that definitely gives us confidence going forward."
WATCH: [All Canucks vs. Blues highlights]
Robby Fabbri, Alex Pietrangelo and Vladimir Tarasenko scored, and Jordan Binnington made 29 saves for the Blues (3-1-3), who lost in overtime or the shootout for the third time this season when leading by two goals. St. Louis has lost three in a row but has had at least one point in six of seven games this season.
"It's a staple of our game for years here, right, is closing out leads," said Pietrangelo, the Blues captain. "We've just got to find a way to keep playing the same way. A couple weird bounces the last couple games, not an excuse, but I think we can still do a better job of closing teams out and keeping things 5-on-5, but there's a lot of things we can build off of here, and once you start closing out games, we're going to be pushing things in the right direction."
Horvat scored right as a 5-on-3 Vancouver power play concluded to tie it 3-3 at 12:05 of the third period. It came on a scramble in front that saw St. Louis defenseman Colton Parayko laying across the goal line before the puck was pushed in with bodies in the crease.