Fredrik Norrena stopped 24 shots for Columbus, which ended a three-game losing skid. Matthew Lombardi scored for the Flames, and Kristian Huselius extended his point streak to 14 games.
Northwest Division-leading Calgary had picked up points in its previous eight games (8-0-3).
The Blue Jackets couldn't score for 133 minutes and 26 seconds, then overcame a 1-0 deficit with two goals in 47 seconds.
Vyborny broke the spell when he grabbed a loose puck and jammed it in at 9:55 of the third period.
Rick Nash was battling Stephane Yelle for control behind the goal when Vyborny reached in and pulled the puck away, then wristed a quick shot that hit goalie Jamie McLennan in the mask and ricocheted into the net.
Before that goal could be announced, Sergei Fedorov tossed a pass through the crease from the left boards that Modin got his stick on and directed past a surprised McLennan.
McLennan, giving front-line goalie Miikka Kiprusoff a night off, finished with 29 saves.
Columbus killed much of the final minute after a delayed penalty was called, playing keep-away with the puck while the Flames tried to regain control of the puck and stop the clock.
Only 21 seconds remained in the second period when the Flames took a 1-0 lead.
Moments earlier, Nash was levelled by defenceman Dion Phaneuf near the corner. When play resumed, Columbus captain Adam Foote was assessed a penalty for unsportsmanlike conduct stemming from the hit on Nash.
About 90 seconds into the power play, Phaneuf whiffed on a one-timer, but David Moss got the puck and slid a pass off the back boards that Huselius snagged and tried to convert on a wraparound. Norrena blocked the shot but the puck slid to the far post where Lombardi jammed in the rebound for his 16th of the season.
Columbus had almost two full minutes with a two-man advantage midway through the opening period but failed to score - although Bryan Berard's hard shot from the point clanged off the crossbar.
Notes: Vyborny played in his 450th NHL game, all with Columbus. ... Calgary was 0-for-4 on the power play, the Blue Jackets were 0-for-5. ... Columbus improved to 6-27-1 when the opponent scores first, with the Flames falling to 22-7-1 in games in which they led 1-0.