Zach Parise, Patrik Elias and Sergei Brylin also scored and Martin Brodeur made 19 saves for his 35th win as New Jersey beat the Canadiens for the eighth straight time, a streak that dates to 2004.
The win also was the Devils' fifth in six games and 16th in 22 (16-3-3), moving them within four points of Buffalo in the race for the best record in the Eastern Conference.
Sheldon Souray and Sergei Samsonov scored for the Canadiens, who have lost 11 of 15 games.
Montreal also may have sustained another loss. Canadiens goalie Cristobal Huet had to leave with 6:49 left in the second period with an injured left hamstring after falling awkwardly in his net on Rafalski's second goal, which put New Jersey ahead 3-1.
Rafalski made two consecutive mistakes late in the first period to set up Souray's 19th, but the all-star defenceman atoned in the second period when the Canadiens took five penalties, twice giving New Jersey two-man advantages.
The first two Montreal penalties changed the game with Francis Bouillon going off for hooking at 1:25 and Souray following 19 seconds later with a delay-of-game penalty for shooting the puck into the stands.
Rafalski tied it at 1-1 with a straight-on shot past a screened Huet just 21 seconds after Souray went to the penalty box.
A minute later, Parise gave New Jersey the lead, finding the top corner of the net from low in the right circle.
Rafalski got his second goal and fourth of the season at 13:11 with Saku Koivu and Mike Komisarek in the penalty box. This time, he beat Huet after Elias dug the puck out from a scramble in front and found the defenceman about 25 feet in front of the goalie.
Samsonov got Montreal within 3-2 at 17:10 with a long shot that Brodeur missed with his glove hand.
Elias restored the two-goal lead midway through, tapping Scott Gomez's pass into an open net after David Aebischer made a save on Mike Rupp. Brylin added an empty-net goal in the final minute.
Aebischer stopped Erik Rasmussen on a penalty shot with 3:12 to play.
Notes: Devils RW Brian Gionta pulled a groin muscle in the second period and didn't return. . . . Canadiens RW Alex Kovalev missed his second straight game with an upper body injury. . . . Devils C John Madden and D Colin White missed the game with facial and upper body injuries, respectively. New Jersey recalled D Mark Fraser from Lowell of the AHL. . . . Devils RW Jamie Langenbrunner extended his point streak to seven games.