Jamie Benn had a goal and two assists, and Jake Oettinger made 28 saves in his fifth straight start for the Stars (33-23-3), who ended a three-game losing streak.
"That was a [heck] of a hockey game," Dallas coach Rick Bowness said. "[Montreal coach Martin St. Louis has] got them playing. Their speed is very impressive. They're high skill level and they come at you and they make you work. The fans got their money's worth tonight and we found a way to get the two points. What I really like is the way we bounced back after that bad game in Toronto [4-0 loss at the Maple Leafs on Tuesday]. So I'm very happy with that."
Cole Caufield and Nick Suzuki each had a goal and an assist for the Canadiens (16-36-9), who have lost four of five (1-2-2). Jake Allen made 31 saves in his first start since he sustained a lower-body injury Jan. 12.
"I was very impressed with Jake tonight, how he calmed us down and kept us in the game in the first period," St. Louis said.
The Canadiens tied the game twice before taking a 3-2 lead on Corey Schueneman's first NHL goal at 12:47 of the third, a slap shot from the point. It was his 11th NHL game.
"I had all sorts of time and I pretty much only had one thing on my mind, and that was shooting, getting it through," Schueneman said. "So I found a lane and luckily it hit the back of the net."