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," Red Wings 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."
The Red Wings took a 1-0 lead at 3:41 of the first period when Lucas Raymond started behind the net, reversed direction and stopped to slip the puck in at the post.
Robby Fabbri made it 2-0 at 4:26, knocking in a rebound from the edge of the crease. It was his third game of the season and first at home.
"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 and he gets a big goal and blocks a huge shot at the end."