Hall scored into an empty net with 27 seconds remaining to make it 4-2.
Zajac also scored, Damon Severson had a goal and an assist, and Keith Kinkaid made 29 saves for the Devils (7-8-1).
"We just kept playing and had the right mindset the whole game and that's kind of what kept us going," Zajac said. "We know we can get chances as a team and create offense. We just need to be hard in the areas we need to be hard in."
Phil Kessel had a goal and an assist, Sidney Crosby had two assists, and DeSmith made 31 saves for the Penguins (7-6-3), who are 1-5-1 in the past seven games.
"It's frustrating because we're trying to find wins right now and can't seem to find them with any level of consistency," Penguins coach Mike Sullivan said. "I thought we had spurts in the game where we were good. We didn't force them to work hard enough for some of the goals they scored and that, for me, is discouraging."