CALGARY -- Sam Bennett scored the game-winner with 1:10 remaining and Mike Smith made 22 saves in his 500th NHL game to help the Calgary Flames defeat the Vancouver Canucks 4-2 at Scotiabank Saddledome on Saturday.
Matthew Tkachuk had two goals and Troy Brouwer also scored for the Flames (16-12-2), who won back-to-back games after having one win in their previous five (1-3-1).
"It's huge," Bennett said. "We knew coming into this game that this was a big one for our team. I liked our game, even when we were down. We didn't change anything. We stayed with it. It was a good come-from-behind (win)."
[WATCH: All Canucks vs. Flames highlights]
Smith, who was making his 26th start of the season, improved to 208-207-62 in 12 seasons with the Flames, Arizona Coyotes, Tampa Bay Lightning and Dallas Stars.
Video: VAN@CGY: Smith absorbs Edler's redirection in close
"Winning is the most important," Smith said. "Obviously, it feels good to win. To play 500 games as a goalie, I guess it's a pretty special thing. I think my Dad told me last night that only 70 goalies had done it so that puts it in perspective a little bit more."
Jake Virtanen and Brock Boeser scored, and Anders Nilsson made 31 saves for the Canucks (14-12-4), who have lost two in a row following a three-game winning streak.
Video: VAN@CGY: Virtanen sweeps home a loose puck past Smith
"We're not getting the results right now but we've got to keep battling," Vancouver forward Henrik Sedin said.
Bennett scored on a backhand in the slot at 18:50 to break a 2-2 tie. He has eight points (three goals, five assists) in his past seven games.
"Right before that, I missed almost an empty net," Bennett said. "My linemates did a great job of battling down low. The puck popped out, one of them chipped it out and I was just able to walk off the wall and get a backhand on net."
The goal came after Tkachuk, who returned from a one-game suspension for unsportsmanlike conduct, tied the game at 2-2 at 11:34 of the third period when he backhanded a shot over Nilsson's right shoulder.
Tkachuk scored into an empty net with 24 seconds left.
Video: VAN@CGY: Tkachuk pots second goal into empty net
"I thought I owed it to the guys to play my hardest tonight," Tkachuk said. "A couple days off so there's no excuse for me to not be moving tonight."
Virtanen gave the Canucks a 1-0 lead 2:02 into the first period when he slid a shot under Smith from just outside the crease. Brouwer tied the game 1-1 at 18:28 when he one-timed a pass from Curtis Lazar past Nilsson.
Boeser gave Vancouver a 2-1 lead with a power play-goal when he tapped a pass at the top of the crease from Markus Granlund past Smith with 55 seconds remaining in the second period. Boeser leads all rookies and is tied for seventh in the NHL with 15 goals, and has 13 points (10 goals, three assists) in his past 13 games.
"We knew he had a real goal-scoring touch and I know I keep saying it, but his play away from the puck is the part that probably impresses me more than his actual goal-scoring because it gives him the opportunity to play more and gives him the opportunity to get pucks in the right areas," Canucks coach Travis Green said.
Vancouver forward Sven Baertschi left the game 25 seconds into the second after taking the puck to the face. No update was given after the game. The Canucks currently are without forwards Bo Horvat (fractured foot), Brandon Sutter (lower body) and defenseman Erik Gudbranson (upper body).
"It's a lot, but that is part of the NHL," Green said. "You have to deal with it. Everyone wants more minutes. Now they get them."
Goal of the game
Bennett's goal at 18:50 of the third period.
Video: VAN@CGY: Bennett nets backhand for nice solo effort
Save of the game
Smith stopped Markus Granlund at 6:36 of the first period.
Video: VAN@CGY: Smith denies Granlund's shorthanded chance
Highlight of the game
Tkachuk's goal at 11:34 of the third period.
Video: VAN@CGY: Tkachuk buries a backhand as he's falling
They said it
"I think the way we did it where it's a team that we're battling with right now, and the way we were able to grab two (points) and for them to get zero, is a big win for us. But I think the way we played in the third period is the way we're going to be successful." -- Flames forward Matthew Tkachuk
"When you play on the road it's going to be tight. We had some chances but in the end, we've got to battle to get it to overtime." -- Canucks center Henrik Sedin
Need to know
Flames forward Jaromir Jagr missed his third straight game because of a lower-body injury. …Granlund, who was selected by the Flames in the second round (No. 45) of the 2011 NHL Draft, played his 200th NHL game. …Forward Nic Dowd, acquired from the Los Angeles Kings in exchange for defenseman Jordan Subban on Thursday, had 8:12 of ice time in his debut with Vancouver.
Canucks: At the Winnipeg Jets on Monday (8 p.m. ET; TSN3, SNP, NHL.TV)
Flames: At the Minnesota Wild on Tuesday (8 p.m. ET; FS-N+, SNW, NHL.TV)
Video: Bennett, Tkachuk power Flames past Canucks, 4-2