Adam Boqvist and Zach Werenski scored, and Elvis Merzlikins made 35 saves for the Blue Jackets (23-23-1), who had won three in a row.
"They're a powerhouse team and they're adding to their group," Columbus coach Brad Larsen said. "They're big, they're strong, they've got a good balance of veteran guys. It's a pretty deep team. We can't have anybody not on board in that game, not one, to stay with them for 60 (minutes). I think they've won six or seven in a row now, they're rolling pretty good. Your margin for error is very small."
Erik Gudbranson put the Flames up 1-0 at 2:10 of the first period.
Calgary took a 2-0 lead at 16:30 when Columbus defenseman Andrew Peeke shot Lindholm's centering pass into his own net. Lindholm was credited with his 19th goal of the season.
"Between periods I told him it was a [heck] of a shot," Larsen said. "What do you say? He's not trying to one-time it, he's going back. It's a reactionary thing, you're trying to clear it, he buries it. There's no point in getting mad over it. It's not a turnover. It's not one of those situations you're frustrated. It's unfortunate. If anything, it was more of a joke. It was what it was. Things like that happen."
Boqvist cut it to 2-1 at 17:50. Patrik Laine's shot off the rush was partially blocked, but the puck bounced to Boqvist and he shot it past Vladar's glove. Laine has scored 13 points (seven goals, six assists) during a seven-game point streak.