Robin Lehner made 34 saves for the Sabres.
Tomas Tatar scored in his third straight game, pulling Detroit within a goal midway through the second.
The Red Wings had power plays early and late in the third period but failed to take advantage of their opportunities to tie the game, falling to 0 for 4 with an extra skater.
Petr Mrazek stopped 28 shots for Detroit.
Buffalo, which hasn't made the playoffs since 2011, has won two straight for the first time in more than a month. The Sabres have an opportunity to pass sixth-place Florida in the Atlantic Division to end a three-year string of finishing in seventh or eighth.
The last-place Red Wings, meanwhile, are five points behind Buffalo in the division and are moving closer toward being mathematically eliminated from the postseason for the first time since 1990. They had won two straight, giving them a chance to win three in a row for the first time in two months and just the third time this season.
Eichel scored his 21st goal for his team-high 50th point midway through the first period. He knocked Detroit defenseman Nick Jensen off the puck behind the net before skating back out to the top of the left circle where his one-timer got past Mrazek.
NOTES: Buffalo D Brady Austin made his NHL debut and D Casey Nelson played for the first time in nearly two months, getting a chance at ice time because the Sabres scratched four defensemen due to injuries. ... The Red Wings scratched forward Darren Helm with a lower-body injury. He might be cleared to play Friday night at home against Tampa Bay. ... Detroit forward Tomas Nosek made his season debut after making his NHL debut last year and playing in six games. Red Wings forward Mitch Callahan was assigned to the AHL's Grand Rapids Griffins.
Sabres: Host the Pittsburgh Penguins on Tuesday.
Red Wings: At the Montreal Canadiens on Tuesday.