Alexei Emelin, Alex Galchenyuk and Brendan Gallagher scored for Montreal.
Jamie Benn and Patrick Eaves had the goals for Dallas, which is four points out of the final wild-card spot in the Western Conference. Kari Lehtonen finished with 23 saves.
Gallagher's power-play goal at 4:37 of the second period gave the Canadiens a 3-1 lead. After Lehtonen saved P.K. Subban's shot from the point, Gallagher jumped on the rebound and scooped the puck over the sprawled-out Stars goalie.
Eaves scored with the man-advantage at 10:05 to pull the Stars within one, and neither team scored again.
Dallas squandered an opportunity to tie the score late in the third period with another 5-on-3 power play, this time for 1:03.
Montreal improved to 13-3-1 in 17 games since losing to the Stars in Dallas on Nov. 11.
The Canadiens benefited from a fluke goal to open the scoring at 6:07 of the first period. Emelin's innocuous dump-in from the Dallas blue line ricocheted off Stars forward Cody Eakin and bounced awkwardly toward the net. The puck then evaded defenseman Trevor Daley, redirected off an unsuspecting Lehtonen and crossed the goal-line for Emelin's second goal of the season.
Galchenyuk staked Montreal to a rare 2-0 first-period lead with an impressive individual effort at 9:53. The 20-year-old cut back toward goal after streaking down the wing, escaped defenseman Jordie Benn's long reach and beat Lehtonen with a backhand, short side. It was Montreal's fifth shot on target.
Dallas scored a crucial and somewhat controversial goal with less than 3 seconds on the clock in the first. After an intentional offside call against Subban, the faceoff moved down the ice to the right of Price. With 2.7 seconds remaining in the period, referees chased Manny Malhotra -- the league's most efficient faceoff-taker -- from the faceoff circle. Gallagher then lost the faceoff cleanly to Jason Spezza and the puck went straight to Jamie Benn, who beat Price and the buzzer to reduce the deficit.
Price broke his stick on the frame of the goal in frustration following Benn's goal.
After scoring in the first, Emelin was ejected from the game 5 minutes into the second period after hitting Spezza from behind into the boards. Montreal's Brandon Prust had taken an interference penalty 20 seconds earlier.
The Stars failed to score on the ensuing 5-on-3 man advantage, but Eaves did beat Price as time expired on Emelin's major at 10:05 of the second, to put the Stars within one. Tyler Seguin got an assist on the goal, his team-leading 53rd point of the year.
Winger Travis Moen was back at the Bell Centre for the first time since being traded by the Canadiens to the Stars on Nov. 11. Moen went to Dallas in the transaction that sent Sergei Gonchar to Montreal.
Christian Thomas, recalled from Hamilton of the AHL on Sunday, played on the fourth line with Malhotra and Michael Bournival.
NOTES: Pierre-Alexandre Parenteau is still sidelined after sustaining a concussion on Jan. 15 against Ottawa. ... Former Canadiens star Erik Cole (upper body) was not in the lineup. ... Price and forward Jiri Sekac, who attended the All-Star game last weekend in Columbus, did not practice with the Canadiens on Monday as their flight back home was delayed.