Iginla ran his goal total for the season to 27, giving the Flames a 2-0 lead midway through the first and then scoring on a wraparound shot late in the second for a 4-2 advantage.
Curtis Glencross boosted the Calgary lead to 5-2 7:16 into the third with his slap shot, but the Canadiens rallied on goals from Lars Eller and Max Pacioretty.
Miikka Kiprusoff was perfect the rest of the way, however, preserving a win in which he made 24 saves.
Carey Price was roughed up for five goals on 34 shots.
Calgary began the night tied with Los Angeles for ninth place in the Western Conference, one point behind San Jose for the final playoff spot.