Linus Ullmark made 44 saves, Jack Eichel had a goal and two assists and Conor Sheary scored twice for Buffalo (13-10-5), which is 2-0-2 in its past four games. Johan Larsson had three assists.
"The last couple of weeks, we think we've been playing pretty good hockey," said Sheary, who ended a 19-game goal drought. "We haven't gotten a lot of results, and part of that is because of secondary scoring. The other part is special teams, and both of those were good tonight. Hopefully that will give us confidence moving forward."
WATCH: [All Devils vs. Sabres Highlights]
Louis Domingue allowed five goals on 15 shots and was pulled after the first period for New Jersey (9-13-4), which has lost five of its past seven games and was without Jack Hughes for a second straight because of a lower-body injury. Mackenzie Blackwood made 15 saves in relief.
"I'm running out of things to say as to why we're playing like that," Devils forward Taylor Hall said. "It's hard. It's a tough pill to swallow, and it's everyone in here. It's too bad. We have the players in here to play a lot better than that. We've got to step it up."
Eichel opened the scoring when his shot trickled between Domingue's pads to give Buffalo a 1-0 lead at 2:46 of the first period.
Jeff Skinner made it 2-0 when he capitalized on a turnover at 4:59.
Sheary scored on a rebound of Skinner's shot to give the Sabres a 3-0 lead at 6:57, then made it 4-0 at 16:41 when his shot from the left circle popped up and hit Domingue's blocker before falling into the net.
Rasmus Asplund's first NHL goal gave Buffalo a 5-0 lead at 19:02.