Tyler Bertuzzi had a goal and two assists, Lucas Raymond had a goal and an assist, and Dylan Larkin had two assists for Detroit (17-17-5), which had lost four in a row (0-2-2).
"This is a huge win for us, because we needed to end the losing streak, especially after getting shut out at home in our last game (3-0 by the Winnipeg Jets on Thursday)," Bertuzzi said. "We can't just do it tonight, though. We have to come out in our next game and back this up."
Aaron Dell made 35 saves for Buffalo (11-20-6), which is 1-5-1 in its past seven games.
"This was close to the opposite of what we saw against Nashville (a 4-1 win Thursday)," Sabres coach Don Granato said. "There's no way to sugarcoat it. It just wasn't good enough from start to finish."
Bertuzzi gave the Red Wings a 1-0 lead at 8:57 of the first period, knocking in a rebound for a power-play goal. Robby Fabbri scored on a power play at 19:09, getting Bertuzzi's pass across the top of the crease to make it 2-0.
"They got those two power-play goals in the first period and got some momentum, but we need to clean that up," Sabres defenseman Robert Hagg said. "We need to be better on the kill and help our goalie out there. [Dell] is the only guy who can feel good about himself tonight."
The Red Wings finished the first period with a season-high 22 shots.
Buffalo was 0-for-3 on the power play in the second period and 0-for-5 in the game.
"We did nothing on the power play," Granato said. "You have to find something there. You have to dig and fight. The power plays just exemplified the rest of the game."