Rasmus Dahlin, Jack Quinn, Dylan Cozens, Jeff Skinner and Rasmus Asplund also scored for the Sabres, who won for the sixth time in nine games. Eric Comrie had 15 saves.
Buffalo had its highest scoring output since a nine-goal effort against Ottawa on Nov. 3, 2018.
“It’s fun watching the guys working for it,” Sabres coach Don Granato said. “We’re trying to convince all of our guys to score some of the ugly ones and the pretty ones will just fall in there. We’ve been guilty of trying to pass the puck into the net. We got more direct.”
Dylan Larkin, Olli Maatta and David Perron scored for the Red Wings, who have lost three of their last four games. Alex Nedeljkovic finished with 38 saves.
“We didn’t show up and they showed up,” Larkin said. “No matter what level of hockey you play, you don’t show up it’s going to be embarrassing.”
Thompson is quickly building off a breakout campaign last season, when he had a career-high 38 goals. The forward has six goals and six assists in nine games this season.
“He’s a guy who can sort of take over a game and dominate,” Skinner said. “He did that.”
Thompson opened the scoring on a blast from the left circle with 3:08 remaining in the first period. Jeff Skinner set up Thompson’s one-timer with a cross-ice pass.
Maatta tied it 1:26 into the second period on a one-timer from the slot.
Quinn put Buffalo ahead four minutes later on a quick shot just under the crossbar following a nice setup by Thompson. It was the second career goal for Quinn, the eighth overall pick in 2020.
Skinner made it 3-1 with his 300th career goal after Thompson found him all alone in front of the Detroit net. The veteran was patient before picking out an opening on the glove side.
Thompson picked up his second of the evening on the power play with 1:30 left in the second. Seconds after hitting the post, Thompson froze both Red Wings defensemen with a toe drag before firing a wrist shot.
Perron got one back for Detroit with one minute remaining in the second, and the Red Wings briefly got back in it when Larkin cut Buffalo’s lead to 4-3 on a short-handed rush 4:19 into the third.
The Sabres then scored four times in a 6 1/2-minute stretch to pull away.
Dahlin made it 5-3 with a power-play goal with 7:07 remaining, and Cozens made it 6-3 nearly two minutes later.
Thompson picked up the hat trick with 4:02 remaining on another highlight-reel effort, maneuvering his way around defenseman Gustav Lindstrom and then Nedeljkovic.
Asplund capped the scoring in the final minute.
LYUBUSHKIN STILL OUT
Sabres defenseman Ilya Lyubushkin missed his second game in a row with a lower-body injury. Lyubushkin played through the injury in three games before being taken out of the lineup.
With the Sabres short-handed on defense due to injuries, the team recalled Jeremy Davies from Rochester of the AHL. Forward Riley Sheahan cleared waivers and was assigned to Rochester.
Red Wings: Host Washington on Thursday night.
Detroit: Host Pittsburgh on Wednesday night to complete a four-game homestand.