Laine extend his point streak to six games (12 points; seven goals, five assists). Elvis Merzlikins made 30 saves.
"I have never seen something like that in my life," Merzlikins said about Laine's shot. "That was something impressive. I'm going to be honest, the goalie had no chance. Even if we had both been in that net, no chance."
The Blue Jackets have won three straight and five of six since winning three of their previous 11 games (3-8-0).
"We're not in the playoffs right now but we're working hard and it's obviously nice to get wins," Laine said. "And you need to get wins at this time of year if you want to make it and we've got to capitalize when other teams are losing and try to get back into the race that way. I think everybody has pride to play this game and play on this team."
Oliver Bjorkstrand gave Columbus a 1-0 lead at 1:16 of the first period.
Caufield tied it 1-1 at 2:55 of the third period with a wrist shot over Merzlikins' right shoulder. It was his second straight game with a goal.
"They do a good job of kind of suffocating the game and that's kind of what was happening to us early in the game," Canadiens forward Tyler Toffoli said. "We were fighting, we were battling and eventually we broke through, not only with the goal but we were creating we really good opportunities, and we had a chance to win today."
NOTES: Laine tied his third-longest NHL point streak. He had three point streaks of at least six games with the Winnipeg Jets, a six-game streak in 2016-17, and an eight-game and a 15-game streak in 2017-18. … The Canadiens acquired goalie Andrew Hammond in a trade with the Minnesota Wild for forward Brandon Baddock. Hammond was recalled from the American Hockey League and is expected to be available against the Buffalo Sabres on Sunday. Goalie Cayden Primeau was sent to Laval of the AHL.