Andrew Mangiapane had a goal and an assist, and Dillon Dube scored for Calgary (20-23-3), which had lost two in a row. Jacob Markstrom made 18 saves.
The Flames are fifth in the seven-team Scotia North Division, six points behind the Canadiens. The top four teams qualify for the Stanley Cup Playoffs.
"I think we have to look at it as just take it as a game at a time," Mangiapane said. "No sense in looking ahead. We'll play them when it happens. Obviously everyone knows what situation we're in, so we've got to make up ground and we're trying to catch these guys and every game's key."
Tyler Toffoli and Joel Armia scored, and Jake Allen made 27 saves for Montreal (20-16-9), which has lost three of four and has not won consecutive games since a three-game winning streak from March 20-April 1.
"I'm sure there's some frustration from everyone, but hey, the game's over," Allen said. "You can think about it for a few minutes but get that out of your head. We go right back at it tomorrow. We have another chance to redeem ourselves here. We're very fortunate. We've got three games here in four days. We'll play our best hockey and get on a roll here heading down the stretch. That's the way I look at it. The game's over. We lost. It's time to move on."