The Hurricanes, 8-1-3 at home since late December, are two points out of the No. 8 playoff position in the Eastern Conference. They killed off three first-period penalties and four overall against Winnipeg, which had won in each of its past five visits to Raleigh.
Carolina played its third game without All-Star defenceman Justin Faulk and their first full game without starting goalie Cam Ward. Ward left with an injury in the second period of Saturday’s win over the New York Islanders, and Lack took his place in net.
Lack faced just four shots in each of the first two periods before turning away 12 of 13 as Winnipeg put on the pressure in the third.
"I thought (Lack) got better and better," Carolina coach Bill Peters said. "When you get an opportunity, you better capitalize on it, right?"
Lack, who said he was suffering from the flu, called the defence in front of him "unbelievable."
"Defensively, we have nothing to complain about right now," said Lack, who improved to 5-2 in his career against Winnipeg.
Carolina outshot Winnipeg 29-21, including 25-8 at one point early in the third period. Ondrej Pavelec made 27 saves for Winnipeg.
Jordan Staal gave Carolina the lead at 10:33 of the first with his 13th goal of the season. On a power play, he gathered a deflection to the left of the net and backhanded a bouncing puck over Pavelec, off the goalie's right leg and into the net.
The goal tied Staal for the team lead in points.
Nash scored on a play similar to Staal's goal, tapping in a deflection in front of Pavelec on a power play midway through the second period.
"It fell at his feet, and I tried to whack it," Nash said. "He tried to dive on it, and it opened up the five-hole."
"He's been in and out of the lineup, and now that he's in, it looks like that that line wants to stay together and give us valuable minutes," Peters said.
Elias Lindholm assisted on both goals for Carolina.
Notes: Winnipeg defenceman Adam Pardy played his first game since mid-January in place of Mark Stuart, who is out with a broken hand. ... Winnipeg's Tobias Enstrom played his 600th NHL game, and Carolina's Joakim Nordstrom played in his 100th. ... Nathan Gerbe and Brad Malone were scratches for Carolina, along with Faulk and Ward. ... Winnipeg's scratches were Stuart, Paul Postma and Anthony Peluso. . Carolina called up goalie Daniel Altshuller from its Charlotte affiliate.