Olli Maatta, Jake Walman and Lucas Raymond scored in the third period, and Ville Husso made 21 saves for Detroit (18-16-7), which had won two straight.
"This has kind of been the story of our season, we can't get on a run and string together some wins," Red Wings captain Dylan Larkin said. "It's frustrating because we win two or three and then have a game like tonight."
Laine gave Columbus a 1-0 lead at 12:47 of the first period with a one-timer from the bottom of the left face-off circle after receiving a cross-ice pass from Gaudreau. It was his first goal since Dec. 17 (10 games).
"It's not a secret, nothing has been going in lately," Laine said. "So, I've been working hard and trying to shoot as many pucks as I can. Tonight I got a couple of bounces and the guys made some great plays."