It was Colorado's first loss in seven road games this season, and Carolina's fourth consecutive victory against the Avalanche in Raleigh.
"We have a lot of respect for a team that's gotten out to the start Colorado has," Carolina coach Kirk Muller said.
"They've played good hockey and we know we've been playing good hockey for the past few games. It was going to take everyone tonight to play a complete game in order to beat that club, and I thought everyone was up to the task."
Carolina has points in four consecutive games (3-0-1), all at home, since snapping a five-game losing streak.
Paul Stastny scored his seventh goal of the season for Colorado, which had won the teams' other meeting this season 4-2 on Oct. 25 in Denver.
"I have to give it to [the Hurricanes]," Colorado coach Patrick Roy said. "They played really well at the start of the game. I would say that the second half of the game was ours. We just didn't execute around the net, and I thought that was the only thing that was missing because we had a lot of chances."
All seven of Carolina's victories this season have been by one goal.
"The 'D' did an awesome job helping me out tonight," Peters said. "[Colorado] was coming fast and hard. We talked about before the game how we wanted to protect the house and we did that. This just shows how well we can play when we stick to the process and do things the right way."
Nathan Gerbe had two assists for Carolina.
Eric Staal played in his 708th game for the Hurricanes, tying Kevin Dineen for third on the club's all-time list.
The Hurricanes led 1-0 after a penalty-free first period in which they outshot the Avalanche 11-5.
Carolina got on the board first at 12:47 of the first, as Staal followed a Gerbe shot by backhanding the puck past Varlamov for his third goal of the season.
Colorado outshot the Hurricanes 19-12 in the second.
The Hurricanes made it 2-0 on a rush 26 seconds into the second, as from the left boards Gerbe passed to Dwyer for an easy glove-side goal with Staal on the secondary assist.
"In the last few games we've been building on those little details," Jordan Staal said. "We've been talking in the room a lot more and getting the guys aware of what we need to do to. It's been the short shifts, the strong plays at the blue line and all those little things that's keeping the other teams away from big opportunities and wearing them down."
Stastny made it 2-1 on the game's first power play at 14:34, picking up the loose puck behind Peters in the crease and following Nathan MacKinnon's shot.
Carolina right wing Radek Dvorak left the game early in the third with a lower-body injury and did not return.
Carolina will complete its five-game homestand Thursday night against the Anaheim Ducks. ... Colorado will play at St. Louis on Thursday night. ... Hurricanes D Tim Gleason (upper body) missed his fifth consecutive game and RW Kevin Westgarth (upper body) his fourth. ... Avalanche LW Alex Tanguay (knee) missed his fourth straight and D Ryan Wilson (back) his third.