Garnet Hathaway scored his first of the season for the Flames (15-12-2) and goaltender David Rittich, making the second start of his career, made 35 saves.
Daniel Carr (second goal of the season) and Phillip Danault (fifth) scored for the Canadiens (13-13-4) and Carey Price made 34 saves.
Monahan took a pass from Johnny Gaudreau and snapped a shot high to Price's stick side for the winner.
Calgary tied the game 2-2 on a controversial goal at 7:49 of the third period. With the Flames crashing the Montreal crease, Hathaway dug at the puck and both the puck and Price wound up in the net. Referee Steve Kozari waved the goal off and announced there was incidental contact with Price.
Calgary coach Glen Gulutzan then used his coach's challenge, claiming there was no goalie interference. After reviewing the play, Kozari announced it was a goal.
Danault scored at 10:10 of the second period to give the Canadiens a 2-1 lead. Danault went to the net against Calgary defenseman Mark Giordano, who fell as Canadiens captain Max Pacioretty backhanded a pass at the net from the right wing. Danault got his stick on it and the puck tumbled behind Rittich.
Carr tied the game 1-1 at 8:36 of the first period as Montreal's fourth line continued its strong play. Bryon Froese passed the puck along the end boards to Carr to Rittich's right, and Carr came out and backhanded a shot off Rittich's right shoulder and into the net. It was Carr's second goal in four games since being called up from the Laval Rocket of the AHL after center Jonathan Drouin was injured.
Monahan gave the Flames the lead at 6:31 of the first period when he chased down a rebound of his shot off the outside of the right post, following a good save by Price on a shot by Giordano, and scored his 16th goal.
NOTES: Calgary LW Matthew Tkachuk sat out against Montreal on Thursday as he served a one-game suspension for unsportsmanlike conduct against the Toronto Maple Leafs on Wednesday in the Flames' 2-1 shootout loss. Tkachuk poked at Toronto forward Matt Martin with his stick from the bench. Tkachuk forfeited $11,280.49. ... Calgary RW Jaromir Jagr missed his second game in a row after aggravating a lower body injury he sustained Nov. 25. ... Montreal C Jonathan Drouin, recovered from his lower-body injury after missing three games, did not play against the Flames because of illness. ... Also injured for the Canadiens were RW Ales Hemsky (concussion), LW Artturi Lehkonen (lower body), G Al Montoya (concussion) and RW Nikita Scherbak (knee). ... Canadiens D Victor Mete, 19, was scratched for the third time in eight games and is a candidate to be sent to play for Canada at the World Junior Championship Dec. 26-Jan. 5 in Buffalo.