CALGARY — After a slow start, it looks like Sam Bennett has finally found his groove.

Bennett scored the winner with 1:10 left in regulation and Matthew Tkachuk had a pair of goals as the Calgary Flames came from behind for a 4-2 win over the Vancouver Canucks on Saturday.

On a determined individual effort, Bennett took the puck hard to the front of the net from the side boards and sent a backhand past Anders Nilsson, electrifying the home crowd.

"It was a big goal and I felt a lot of emotion there. After a tough start, it's definitely nice to get one like that," said Bennett, who has three goals and eight points in his last seven games.

The 21-year-old, who has been playing alongside rookie Mark Jankowski and a combination of Jaromir Jagr and Garnet Hathaway, has been especially hot on home ice with points in each of his last seven home games (4 goals, 6 assists) at the Scotibank Saddledome. That streak began on Nov. 9 after he failed to pick up a point in the season's first 15 games.

"His game was trending in the right direction and now he's getting results," said Flames coach Glen Gulutzan. "That's a real good sign for our hockey club and it's a great sign for Bennie."

Tkachuk added his second of the night into an empty net as Calgary made it two games in a row that its come back to win after trailing to begin the third period.

"When it was 2-1 headed into the third, we realized we had a little bit of a hill to climb, but some big goals from key players there and a huge two points," said goaltender Mike Smith, who was playing in his 500th career game.

Troy Brouwer also scored for Calgary (16-12-2). The Flames move two points ahead of the Canucks in the Pacific Division.

Jake Virtanen and Brock Boeser scored for Vancouver (14-12-4).

"We played a good game. We're not getting the results right now but we've got to keep battling," said Canucks centre Henrik Sedin.

Calgary pulled even at 11:34 of the third when Hathaway's alert pass found Tkachuk in the slot and the 19-year-old sent a backhander into the top corner.

"You never want to miss a game," said Tkachuk, who returned after serving a one-game suspension. "I was pumped when they pulled out the win in OT in Montreal. I thought I owed it to the guys to play my hardest tonight."

Vancouver broke a 1-1 tie on a power play with 55 seconds remaining in the second period.

Cutting in off the wing, former Flame Markus Granlund put a slick centring pass right on the tape of Boeser, who neatly steered in his 15th goal.

"I'm really pleased with his game. 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," said Canucks coach Travis Green.

The impressive 20-year-old, who was the NHL's rookie of the month for November, has 10 goals in his last 12 games.

After Virtanen scored 2:02 into the game, Calgary pulled even at 18:28 on Brouwer's one-timer of a Curtis Lazar set-up on a two-on-one.

Smith made 22 stops to improve to 13-9-2. At the other end, Nilsson had 31 stops to fall to 6-3-1.

Sven Baertschi took a puck in the face early in the second and did not return.

Notes: Granlund played in his 200th career game... Nic Dowd made his Canucks debut after being acquired Thursday in a trade with Los Angeles.... Making his season debut for Vancouver was Michael Chaput, recalled from Utica (AHL) on Thursday... Del Zotto's assist was his 200th NHL point.