Montreal's victory ended its season-high four-game losing skid and Carolina's four-game win streak in the process.
Anton Khudobin made 27 saves for Carolina (24-20-9).
Montreal has now won six of its last seven against Carolina at the Bell Centre.
After a big save by Price on Nathan Gerbe at one end of the rink, the Canadiens scored on a fast break going the other way.
Rene Bourque, who had only one assist since the start of the year, started the tic-tac-toe play when he found Josh Gorges in the clear to Khudobin's right. Gorges quickly dished the puck to Prust, who beat the Hurricanes netminder under the blocker for his fifth of the season at 6:11 of the first.
The Canadiens doubled their lead late in the period when Gallagher persistently poked home his own rebound, getting the better of the Hurricanes in a six-player melee in front of Khudobin's net.
Pacioretty added an easy tap-in to make it 3-0 at 1:41 of the second.
Price made 10 saves in the third to earn the shutout.
The game was Carolina's second in as many nights, and fifth in seven days. The Hurricanes beat the Columbus Blue Jackets 3-2 on Monday, scoring three third-period goals for the come-from-behind victory.
Notes: Before the game, Habs assigned forward Louis Leblanc to the Hamilton Bulldogs. Leblanc has yet to register a point in eight NHL games with the Canadiens this season. … Carolina starting goaltender Cam Ward has now missed 13 games with a lower-body injury. … Ex-Hab forward Aaron Palushaj, who played 41 career games with Montreal between 2010 and 2012, was in the starting lineup for Carolina. … The 'Canes and Habs meet again on Feb. 8 in Raleigh, N.C., for the third and final time this year.