Five different players scored for the Red Wings (8-5-2), who had lost six of their past eight games (2-4-2). Jeff Petry and Christian Fischer each had two assists, and Ville Husso made 18 saves.
"We had a great start, and I was happy with our whole 60 minutes," Detroit coach Derek Lalonde said. "It was a very complete game for us."
Patrik Laine scored his 200th NHL goal in his return for the Blue Jackets (4-7-3) after missing nine games with an upper-body injury. Spencer Martin made 23 saves for Columbus, which has lost four straight and eight of nine (1-5-3).
"We have to find a way to get some points," Blue Jackets defenseman Zach Werenski said. "There are obviously some good things we can take away from this game, but we need points in the standings."
Lucas Raymond gave the Red Wings a 1-0 lead at 3:41 of the first period. He started behind the net and reversed direction before stopping to slip the puck in at the post.
Robby Fabbri, who was playing in just his third game of the season, made it 2-0 at 4:26, knocking in a rebound from the edge of the crease.
"We have all seen how hard [Fabbri] has worked to come back from injuries and get back onto the ice," Petry said. "This is his first game back in the building (at home), and he gets a big goal and blocks a huge shot at the end."