Martin Necas and Jaccob Slavin each had a goal and an assist for the Hurricanes (11-3-1), who are 4-0-1 in their past five games. James Reimer made 26 saves.
"We had a great game tonight," Carolina coach Rod Brind'Amour said. "I thought we could have had 10 goals. We were on it, and I don't think we gave up a ton. They're such a dynamic team, where they can all of a sudden out of nothing spring something. James had to make some big saves."
Patrick Kane had a goal and two assists for the Blackhawks (9-6-4), who had won three in a row. Kevin Lankinen made 33 saves.
"It was a big challenge, they're a really good team," Chicago coach Jeremy Colliton said. "They probably were better than us the first two periods, but I thought we hung in there, showed some resiliency to stay in the game, and gave ourselves a chance to make a couple of plays to be in a tie game."
The Hurricanes scored the first two of their three third-period goals on the power play.
Necas put Carolina ahead 3-2 at 2:28. Lankinen got a glove on the shot by Necas, but the rebound deflected high in the air and went in off defenseman Calvin de Haan's back.
"I think [Necas'] confidence has really grown, and you can see it in the way he's playing," Brind'Amour said. "He's been really solid."