Pacioretty opened the scoring 2:39 in and restored the Canadiens' one-goal lead at 2-1 with his 15th of the season 3:54 into the second. Montreal scored three times in the middle period.
Desharnais had a goal and two assists, and Cole had three assists on a line that combined for nine points.
"We felt good for the past couple of games and we were waiting to have a game like this," Pacioretty said. "Hopefully we can keep it going."
Peter Budaj made 28 saves, and Mike Blunden also scored for the Canadiens (17-20-8), who are 12th in the Eastern Conference. Montreal, 18 points behind the East-leading Rangers, has won six straight against New York at home.
"I'm glad that my work paid off," said Budaj, who made his first start since Dec. 21. "I always try to prepare myself, whenever I get a chance, to play to the best of my abilities and help the team to win a game. I got a big win tonight against a great team. That's always pretty satisfying, but when you look at the scoreboard, we have a long way to go."
John Mitchell scored in the first for the Rangers, who became the first team to reach 60 points this season when they beat Toronto 3-0 on Saturday night. However, New York has lost two of three after a 10-1 spurt.
"It was uncharacteristic, some of the breakdowns we had," Rangers center Brad Richards said.
Henrik Lundqvist, who was rested Saturday, stopped 25 shots for the Rangers.
"We had no structure defensively," New York coach John Tortorella said. "That was our biggest problem."
Rene Bourque made his Montreal debut after he was acquired from Calgary on Thursday in a multiplayer trade that sent Mike Cammalleri to the Flames. Bourque sat out Saturday night's 3-2 shootout loss as he served the final game of a five-game suspension for elbowing Washington's Nicklas Backstrom in the head on Jan 3.
"Rene was everything we expected," Canadiens coach Randy Cunneyworth said. "He battled along the walls, just as advertised, and I think we're going to enjoy a lot of his two-way play for a long time to come."
Pacioretty fired a loose puck in the slot over a sprawled Lundqvist to give Montreal an early 1-0 lead. He made it 2-1 when he deflected in Cole's shot early in the second.
Blunden increased the lead to 3-1 with his second goal at 7:11.
Desharnais finished off a nice centering pass by Pacioretty from the right side for his seventh goal -- Montreal's third goal in a row -- at 12:18.
Mitchell scored his third of the season 12:49 into the first to tie it at 1. He put away a rebound after Budaj made the initial stop on Derek Stepan's point-blank one-timer off a pass from Marian Gaborik from behind the net.
Montreal left wing Mathieu Darche was struck around the throat by teammate Lars Eller's shot early in the third. Darche held his glove to his throat as he skated off the ice and went directly to the medical room, but he returned moments later.
Winnipeg's Blake Wheeler was hospitalized Saturday after he was struck in the throat during the Jets' loss to New Jersey.
Rangers C Brandon Dubinsky missed his third straight game because of a shoulder injury. ... C Petteri Nokelainen and D Chris Campoli were scratched from Montreal's lineup. ... No. 1 Canadiens G Carey Price had made nine straight starts, and 18 of 19, before getting the night off.