Buffalo scored three power play goals in a 1:41 span in the second period to jump out to a 3-1 lead.
With a two-man advantage, Okposo took a cross-ice pass from Sam Reinhart and snapped a shot from the slot by Elliott to tie the game at 11:27. Larsson added another 36 seconds later, tipping Evander Kane's point shot between Elliott's legs to put the Sabres up 2-1.
"Special teams has been an issue, I think," Flames captain Mark Giordano said. "Extended 5-on-3's are tough when they're that long. But again, we've got to kill them. And then when something bad does happen we can't dwell on it, we can't let it pile up like we did there. That was just one after the other. It's not good enough."
Moulson scored again at 13:08 to extend the lead to 3-1.
"I felt for the first 30 minutes we're playing well enough on the road to win," Gulutzan said. "That's the frustrating part.
"A full two-minute 5-on-3 is hard to kill in the National Hockey League. You get a 35, 40 second one and you get one icing you can almost get it down. Two minutes … two straight minutes is tough. I thought they did a good job with the 4-on-3 and did a good job for the first minute or close to there of the 5-on-3 and we make one mistake and it ends up in our net.
"It was the bounce-back really, for me. Two-minute 5-on-3 and you give up one and you get out of there and now you're 5-on-4 and you've got about a minute left to kill … you've got to get that done and then move forward.
"If you gave up one that's the way it goes when you're down for that long. But we didn't respond after that."
Tkachuk pulled Calgary to within 3-2 just 22 seconds into the third period when he redirected Dougie Hamilton's slap-pass by Lehner as a Flames' power play expired. The assist is Hamilton's fourth in the past two games.