Plekanec scored midway through the third to put Montreal up by two after Kostitsyn and Lapierre scored in the first to stake the Canadiens to a 2-1 lead.
The key to the game was Halak, who turned aside 12 shots in the first, 14 in the second, and 19 in the third.
"I don't know what the final shot total was - 45 or 50, somewhere in that range -- but he stood on his head and made a lot of second and third saves for us," Canadiens right wing Brian Gionta said.
Halak, who stopped 34 shots in Saturday's 3-2 overtime loss in Ottawa, started after recording a loss for the first time in 10 such occasions this season.
"Yeah, I was aware of that," said Halak, who will play for Slovakia at the Vancouver Winter Olympics. "I knew that was my first start after I lost a game this season and I didn't change anything. I just wanted to prepare for the game the same way as for the game before and just try and do my best."
Montreal had lost three in a row and six of eight (2-4-2).
"Hockey is a great game and I thought that was a hard-fought game by both teams tonight," Canucks coach Alain Vigneault said. "The difference was we weren't able to bury some of the grade-A chances that we had 5-on-5 and the best player on the ice tonight -- without a doubt -- was their goaltender, and he kept the puck out and they won the game."
Roberto Luongo stopped 25 shots. Luongo, a member of Canada's Olympic hockey team, was pulled after allowing three goals in the first period against the Maple Leafs.
He stretched out his left pad to deny Plekanec's first shot on a backhand, but the Montreal center scored to put the Canadiens up by two 9:14 into the third on a second effort shot that Luongo got a piece of, but was unable to prevent the puck from floating into the left side of the net.
"Unfortunately, that last one I stopped the first four [shots], I just couldn't get -- I got a piece of the fifth one, but not enough," Luongo said.
Kesler drew the Canucks within one at 14:10 when he batted home his 14th goal from the edge of the crease.
With Luongo pulled and Vancouver pressing for the tying goal, Alexandre Burrows was penalized for interfering with Halak with 39 seconds remaining.
The Canucks' trip extends over two legs in order to prepare GM Place to host the Olympic hockey tournament, including their current eight-game road swing leading up to the Winter Olympics, and another six-game trip following the games.
The Canadiens were without leading goal scorer Mike Cammalleri for the first time this season. Cammalleri, who has 26 goals and 48 points, will be sidelined for about six weeks because of a knee injury suffered Saturday when he fell awkwardly into the boards after he was checked by Ottawa's Anton Volchenkov.
"I guess everybody had to step up their game and that's what we did," said Plekanec, who leads the Canadiens with 55 points.
Kostitsyn gave Montreal a 1-0 lead with his second goal of the season 5:56 in. Kostitsyn took a pass from Benoit Pouliot on the right side and cut across to the slot, where he beat Luongo with a low wrist shot.
Samuelsson drew Vancouver even during a 4-on-3 advantage at 8:26 when he drove a slap shot past Halak from the point.
Lapierre restored the Canadiens' one-goal lead late in the first. Mathieu Darche put a backhand shot toward the net from a sharp angle and Lapierre pounced on the loose rebound to fire the puck into the left side of the net at 18:04.
"We knew he was going to give rebounds in the slot," Lapierre said. "We looked at the video before the game and we tried to shoot at his pads and skates, and that's what happened on that goal."
- Canucks D Sami Salo assisted on Samuelsson's goal in his return to the lineup after missing four games because of a groin injury.
- Vancouver D Willie Mitchell (concussion) missed his seventh game in a row.
- The Canadiens announced earlier in the day that Cammalleri would not require surgery.
- Halak recorded a shutout in Montreal's 3-0 win over the Canucks at Bell Centre last February 24.