Calgary trailed 3-0 when Mason Raymond broke up the shutout early in the third period. Josh Jooris narrowed the lead with a goal in his NHL debut, scoring off a pass from Mark Giordano with over eight minutes left.
The Flames, five games into a six-game road trip after opening at home, threatened to the end.
Calvert had an assist to go with his goal. Mark Letestu had two assists as the Blue Jackets wrapped up a three-game homestand.
The Blue Jackets were 4 for 4 on the penalty kill to stay perfect this season in nine attempts.
Raymond scored seconds after a power play ran out, converting after a pass from Curtis Glencross, formerly on the Blue Jackets.
Then Jooris, a free-agent signing out of Union College, converted Giordano's long pass with a forehand high over Bobrovsky's glove to make things interesting.
The Flames weathered a Columbus power play and then applied heavy pressure in the waning moments. Bobrovsky blocked a high, hard shot by Giordano in the final minute and the Flames also had a shot ping off the post with just under two minutes left.
Fedor Tyutin and Johansen cleared the puck in the final 90 seconds to hold off Calgary.
Karri Romo, who had 23 saves, lost for the first time after a 2-0 start.
In their first loss on Tuesday night, a 4-2 setback to Dallas, the Blue Jackets had been passive in the opening period and fell behind 2-0. They reversed that against the Flames.
Columbus had the first seven shots, by which time it had a 2-0 lead.
Mark Letestu wheeled from the left corner toward the crease and fed Skille, who was charging the net, for a one-timer and a 1-0 lead at the 2:59 mark.
On the power play just over 2 minutes later, Cam Atkinson worked hard to control the puck in the offensive zone before feeding Nick Foligno, who swept toward Ramo and then slipped a backhanded pass to Johansen for a quick shot to double the score at 5:21.
Johansen, who missed almost all of training camp in a holdout before signing for $12 million over three years, has three goals and three assists in the first four games. Foligno also extended his points streak to four games.
The Flames regained some momentum later in the period with the last five shots on goal.
The Blue Jackets made it 3-0 at 7:55 of the second. James Wisniewski's drive blast from the point was deflected by Ramo to Letestu. Ramo stopped Letestu's offbalance shot with the toe of his right skate, but Calvert swooped in to jam the puck in as it sat near the goal line.
NOTES: Sporting a nasty bruise on his face, forward Lance Bouma returned for Calgary after missing a game. ... Calgary rookie forward Johnny Gaudreau was a healthy scratch after just one shot on goal in his first five games. ... As a part of the Hockey Fights Cancer initiative, the Blue Jackets wore purple sweaters during pregame warmups that were then auctioned off for the charity. ... Flames forward Devin Setoguchi was scratched for an undisclosed reason.
Follow Rusty Miller on Twitter: http://www.twitter.com/RustyMillerAP