Aaron Ward, Marco Sturm, Brandon Bochenski and P.J. Axelsson scored as the Bruins won for the seventh time in 11 games (7-3-1) to pull within four points of Carolina for the eighth and final playoff spot in the Eastern Conference. They have played three less games than the defending Stanley Cup champion Hurricanes.
Mike Rupp scored for the Devils, who lost consecutive games for the first time since the end of January.
MacDonald, who was acquired on waivers from Detroit on Feb. 24, was solid in giving Tim Thomas his first day off since Jan. 20. Thomas had started 15 straight games and played in 18 in a row.
The Bruins made things easy for the 27-year-old MacDonald in his ninth NHL game. He was 1-5-1 with the Red Wings earlier this season.
Ward, who was acquired in a trade with the New York Rangers last week, gave the Bruins a 1-0 lead midway through the first period with a shot from the blue-line that found the upper corner of the net.
Sturm made it 2-0 19 seconds into the second period with the Devils finishing off a power play. Patrice Bergeron deflected the puck near the New Jersey blue-line and Sturm beat Martin Brodeur on a breakaway.
Rupp spoiled MacDonald's shutout bid, scoring on a rebound at 6:40 of the third period, shortly after a Devils' power play ended.
Bochenski, who got the primary assist on Ward's first goal as a Bruin, gave Boston breathing room less than two minutes later, redirecting a Phil Kessel pass past Brodeur.
Axelsson added an empty-net goal with 41.7 seconds to play.
NOTES: Devils right wing Brian Gionta returned to the lineup after missing eight games with a groin injury. ...New Jersey RW Cam Janssen sat out the first game of a three-game suspension for a late hit on Toronto D Tomas Kaberle on Friday. ...Thomas had started the past 15 games for the Bruins. ...Sturm has points in six straight games (two goals, five assists).