Andrei Markov had a power-play goal and picked up an assist for the Canadiens, who have won seven of their last nine games. Roman Hamrlik collected three assists, while Jaroslav Halak made 36 saves to earn the win.
Chris Drury, Ryan Callahan and Michal Rozsival each had a goal for the Rangers, who have dropped five of their last seven games. Henrik Lundqvist stopped just 19 shots in defeat.
While on the power play, Markov let fly a wrister from the top of the left circle that beat Lundqvist high on the glove side and gave Montreal a 3-2 lead 2:32 into the third period.
The Canadiens then capitalized on a two-man advantage. Andrei Kostitsyn's blast from the right point sailed wide of the net, caromed off the lively end board and came back out to Lang at the far post, where he buried the puck behind Lundqvist at 4:40.
Rozsival cut the deficit to one two minutes later, but Lang restored a two- goal edge for Montreal with 4:31 left in the game. He carried the puck through the neutral zone, stickhandled around Rangers defenseman Marc Staal and rifled a shot past Lundqvist.
Lang added a short-handed empty-net marker in the final minute.
Montreal grabbed a 1-0 lead on Lundqvist's misplay. The Swedish netminder ventured behind his cage and swept the puck into the far corner. Rookie left wing Max Pacioretty took the inadvertent relay from Lundqvist and whipped the puck into the slot for Alex Kovalev, who slammed it home at 3:05 of the first period.
Drury put the Rangers on the board with 2:38 to play in the frame, then Guillaume Latendresse answered 91 seconds later for the Canadiens. Hamrlik uncoiled a slap shot from center ice that handcuffed Lundqvist. Latendresse pounced on the juicy rebound and fired a shot over the goalie's right shoulder.
Callahan evened the score 9:25 into the middle stanza, one-timing Scott Gomez's cross-ice pass behind Halak.