Cory Schneider, who was making his NHL-leading 49th start of the season, made 24 saves to earn his 20th victory of the season. Patrik Elias scored in in the first period for the Devils (22-26-9), who ended a four-game losing streak. The Devils are 4-6 in the shootout this season; all four victories have been at home.
"It was a game we thought we had to have for a number of reasons, but Buffalo is a tough out because they work hard and they didn't quit," Schneider said. "They got that goal in the third [to tie the game 1-1], but I thought we responded the right way."
New Jersey outshot Buffalo 35-25, getting 30-or-more shots on goal for the first time since Jan. 19 at the San Jose Sharks (34).
"We didn't sit back and we went at them, got good shots and chances," Schneider said. "I think we feel a little more comfortable in the shootout than we did last year. It was nice to see [Gomez and Josefson] bury the first two."
"Cory has been the constant for us all season," Devils co-coach Lou Lamoriello said.
Ennis scored early in the third period and Michal Neuvirth made 34 saves for the Sabres (16-38-3). Neuvirth, who was seeking his first victory since Nov. 15, made 13 saves in the third and four in overtime.
"It's a lottery in a shootout, but one point is big for me," Neuvirth said. "I need to stay confident. The more I play the more confident I feel. Overall I felt pretty good and it was a good solid game by the team. The guys worked hard. If we play like that we'll get the win next time.
"It's tough [not having won a game in November] but I don't think about it. I don't need to put any more pressure on myself. I just have to take it game by game. If we play like that, we'll get a win."
The Sabres are 2-24-1 when trailing after the first period.
Adam Henrique missed a chance at giving the Devils a 2-1 lead with 3:27 left in the third period when he shot wide of the net on New Jersey's first penalty shot of the season. Henrique had taken a pass from Travis Zajac in the neutral zone and broke into the Sabres end before being tripped from behind by Zach Bogosian.
"Adam is low-key, on an even keel at all times and he had poise after missing that shot," Lamoriello said. "He came off the bench and was not afraid to get right back out there."
Ennis scored his 14th goal of the season 27 seconds into the third to help the Sabres erase a 1-0 deficit. After Zemgus Girgensons won an offensive zone faceoff, Ennis picked up the loose puck in the right circle and quickly snapped a shot that beat Schneider under the arm.
"I felt good through the first two periods. Stuff like that happens, but I thought our team responded well," Schneider said. "We just had to be ready and not sit back and wait."
Elias scored his 402nd career goal on the power-play 6:19 into the first to give the Devils a 1-0 lead. Marek Zidlicky directed a shot toward the net from the left point and Elias got the blade of his stick on the puck, redirecting it past Neuvirth. The goal was scored with Sabres captain Brian Gionta serving a holding penalty.
The Devils missed a golden opportunity to extend the lead at 14:29 when Gomez and Jaromir Jagr broke in 2-on-0 against Neuvirth but failed to get a shot on goal. After receiving a pass, Jagr gave the puck back to Gomez instead of shooting into the open left side of the net.
Devils forward Stephen Gionta returned after missing the past 18 games because of a fractured left hand.
"I don't think we panicked when Buffalo tied it up; we knew we had some chances and stuck with it," Devils defenseman Eric Gelinas said. "We found a way to win. Right now we want to win every game and we need to win every game. We started our homestand on the right foot."