VANCOUVER, British Columbia (AP) — The Blues finally got a win in Western Canada.

Kyle Brodziak had a goal and an assist, and St. Louis snapped a three-game skid with a 3-1 victory over the Vancouver Canucks on Saturday night.

Patrik Berglund and Alexander Steen also scored for St. Louis, which got 30 saves from Jake Allen.

Brock Boeser got his team-leading 20th goal for Vancouver. Jacob Markstrom stopped 31 shots.

The Blues had dropped three straight in regulation on a trip through Western Canada.

"We knew we weren't far off," St. Louis coach Mike Yeo said. "It's been a grind. I'm glad the guys get a little time to rest up physically and mentally."

The Canucks have lost four in a row (0-3-1) and are 1-7-1 over their last nine while getting outscored 44-20.

Brodziak put the Blues ahead late in the second period. He shot the puck from the bottom of the faceoff circle, and it tipped off Vancouver defenseman Ben Hutton's stick and slipped past Markstrom shortside with 90 seconds left.

Markstrom, who was also at fault on the Blues' first goal, was stellar for most of the period, stopping both Steen and Paul Stastny on breakaways before again thwarting Steen with a nice toe save moments after his gaffe on Brodziak's goal.

Brayden Schenn hit the post on St. Louis' power play midway through the third period before Markstrom stopped Joel Edmundson on the same man advantage.

Boeser broke the other way on a 2-on-1 shortly after with the crowd buzzing, but Allen was there to make the save.

"Watching some tape, he's got such a hard and good release that I don't think it's a reactionary save," Allen said. "It's a positional save. If you try to wave your glove at it, he's probably going to beat you most of the time."

Brodziak and Alex Pietrangelo then each hit the post in quick succession as the Blues pressed to extend their lead.

Boeser went the other way again and ripped another shot off the wing that Allen stopped up high.

The Canucks continued to push, but couldn't find a way through before Steen scored into an empty net with 52.3 seconds left. St. Louis improved to 19-0-0 when leading after 40 minutes.

Down 1-0 after the first, Boeser evened things at 1:46 of the second on a slick passing play. The Canucks stripped defenseman Colton Parayko of the puck in the St. Louis zone, with Sam Gagner feeding a pass to Thomas Vanek, who went back against the grain to find a wide-open Boeser.

The 20-year-old, who leads all NHL rookies in goals, is the fastest Canucks rookie to reach the 20-goal mark and, including his cameo at the end of last season, has scored 24 times in 43 career games.

It took Pavel Bure 49 games to reach 20 goals in his rookie season with Vancouver in 1991-92.

"It means a lot, but it's obviously a lot better if we're getting the results we want," Boeser said. "It's a tough stretch right now. This (Christmas) break will be nice to regroup."

Canucks No. 1 center Bo Horvat — currently out with a broken foot — led the team with 20 goals in 81 games last season.

NOTES: Hutton returned to the lineup after sitting out two straight as a healthy scratch. ... Berglund played in just his 14th game of the season after missing the first 24 contests following shoulder surgery.

UP NEXT

Blues: Host Nashville on Wednesday night.

Canucks: Host Chicago on Thursday night.

___

More AP hockey: https://apnews.com/tag/NHLhockey