"It definitely wasn’t our best game. It wasn’t like we dominated 60 minutes," said Horvat. "But we scored at the right time and made big plays at the right time."
Horvat put the visitors in front at 4:12 on the power play when he swatted in a centring pass from Ben Hutton.
Shortly after, Brett Kulak made a bad pinch and his defence partner Matt Bartkowski got caught flat-footed in the neutral zone, enabling the Sedins to break in dangerously with Daniel setting up Henrik’s first goal of the season.
"I feel better than the last couple years," said Sedin, 37, who last scored on March 23, 2017. "We’ve created enough chances for me to put the puck in the net. Early in the season you need bounces to get goals early and I haven’t gotten that."
A big moment came late in the second when the Flames, leading 3-2, got a power play at 18:04.
With Calgary in a good spot to open up a two-goal cushion, the Canucks instead scored a short-handed goal to tie it. After outracing TJ Brodie for a loose puck and then drawing Mike Smith out of position, Brandon Sutter had his centring pass bounce into the open net off the leg of Derek Dorsett.
It was a tough sequence for Brodie, who after flubbing his point shot, had the Canucks clearing attempt bounce off him.
"I whiffed on the pass to Johnny (Gaudreau) and then the dump hit my hand and I didn’t really see where it went at first," said the Flames defenceman. "He had a breakaway and I just tried to get back and try to get a stick on the puck."
That’s where the game slipped away, said Flames coach Glen Gulutzan.
"Today was a game of critical moments, critical saves," said Gulutzan. "Up 3-2 with two minutes to go in the second period, we’ve repeated it 1,000 times what it means to go into the third with the lead. We get a power play and we give up a shortie, that’s a tough one to give up."
With back-up goaltender Anders Nilsson away from the team and with his wife, who is about to give birth, Markstrom got the start once again after losing 3-2 to Detroit on Monday night.
"He was phenomenal the way he made big, huge saves at big times of the game," said Horvat. "When he had opportunities to see the puck and stop it he’d make a heck of a save. He’s been awesome for us all year."
Sam Gagner and Thomas Vanek also scored for Vancouver (8-5-2), which earned a fourth straight road victory.
Dougie Hamilton, Johnny Gaudreau and Micheal Ferland scored for Calgary (8-7-0), whose three-game winning streak came to an end.
Tied 1-1 after the first period, Calgary took the lead twice in the second but was unable to hold it each time.
"The goals we gave were exactly that, we gave them goals with unnecessary mistakes and turnovers and they made us pay," said Flames captain Mark Giordano. "We were controlling the play and then we made a couple of mistakes. one shot and it’s in the back of our net because it’s a quality chance."
Markstrom finished with 30 saves while Smith was beaten five times on 21 shots.
Notes: Flames RW Jaromir Jagr (groin) returned after missing six games. To make room, Matt Stajan was a healthy scratch… Vancouver C Brendan Gaunce (shoulder) was activated off IR and made his season debut. He took the spot of C Markus Granlund (upper body), who was hurt in Monday’s loss to Detroit… Vanek played in his 900th game.