Jeff Skinner tied the score early in the second period and Jordan Staal has pushed the Canes ahead 2-1 after two.
Skinner went top-shelf on a rebound to tie the score 1-1 at 1:53 of the second. It was the first goal since Oct. 19 for Skinner, who missed 11 games with a hand injury before returning last week against the Detroit Red Wings.
Staal scored his fourth of the season on a home-run pass from defenseman Justin Faulk. After Faulk and Ron Hainsey reversed the puck behind the Canes net, Faulk found Staal breaking up ice all alone and made the pass from behind the goal line.
Staal beat Devils goalie Cory Scheinder high to the glove side, just as Skinner did, at 6:34 of the period.
Digital Access for only $0.99
For the most comprehensive local coverage, subscribe today.
Canes defenseman Brett Bellemore helped preserve the lead. After a flurry in front of the Canes net, goalie Cam Ward was down and out of position but Bellemore went low to block a shot by Dainius Zubrus with a minute left in the second.
Mark Fayne's first goal -- and point -- of the season gave the Devils a 1-0 lead after the first period.
Fayne scored with 1:40 left in the first on a shot from the top of the right circle that appeared to glance off Hainsey in the slot and change direction. Fayne was open for the shot when the Canes' Jeff Skinner was looking to leave the zone and was too slow to recover check Fayne.
The Devils generally outplayed the Canes in the opening period and had a 14-5 shooting edge. The Canes had an early power play but got little out of it.
Schneider, starting in net for the Devils, wasn't challenged often in the first but made a couple of neat stops with about two minutes left. The Canes' Nathan Gerbe circled the net for a wraparound and Eric Staal had a chance at the rebound but Schneider made the stops.
Martin Brodeur started in net for the Devils on Wednesday as the Canes won 4-3 in New Jersey. In his last start, Nov. 21 against the LA Kings, Schneider stopped 34 of 35 shots.