Trailing 3-2 entering the final frame, Staal tied it up with an unassisted goal 3:15 into the period, and Jamie McBain made 4-3 Carolina 5 1/2 minutes later on a power play.
Staal added an empty-netter and McBain contributed an assist for Carolina, which won for only the second time in eight meetings with the Canadiens.
David Desharnais had a goal and an assist for the Habs, whose had carried a four-game winning streak into the contest.
Carey Price yielded four goals on 34 shots.
Rosie O'Donnell unveils nearly 50-pound weight loss
Putin thinks Obama would save him if he were drowning