The Sharks were 31-14 in the first two periods and had a rookie goalie making his first NHL start, but led 1-0.
While Troy Grosenick was steady in net, weathering Canes offensive flurries, Tomas Hertl gave the Sharks the lead with 1:14 left in the first period.
With Canes defenseman Ron Hainsey caught pinching down into the offensive zone, the Sharks put together a two-on-one rush. Hertl's pass was blocked by Canes defenseman Andrej Sekera, but the puck bounced back to Hertl and he knocked it past goalie Anton Khudobin.
The Canes had two power plays, a 16-6 shooting edge and several good scoring chances in the first. On the first power play, Elias Lindholm had a heavy shot from the low slot stopped by Grosenick. Victor Rask later sent three shots at Grosenick, who stopped the first two and then had the third hit the side of the cage.
Never miss a local story.
The Canes' second power play of the first period came with 3:29 left in the period, but the Sharks had the best chances as Patrick Marleau and Adam Burish managed shorthanded shots.
Grosnenick continued to thwart every Carolina threat in the second. Early in the period, he denied Zach Boychuk's on a give-and-go with Jiri Tlusty, then made his best stops in the final seconds of the period.
Sekera got off a shot from the point that hit Grosenick in the chest. Rask was for the rebound but Groesenick made a pad save, then reached out to stop a Jeff Skinner backhand.
Khudobin was making his first season of the season on home ice.
No NHL team has played more road games this season than the Sharks, who were playing the fifth game in a six-game trip Sunday and their 15th road game of the season.
The Canes leave Monday for a run of five road games.
Canes forward Alex Semin (upper-body injury) and defenseman Jay Harrison (lower-body injury) missed their second straight game.
Both the Canes and Sharks lost road games Saturday, both by 2-1 margins -- the Canes in Boston and the Sharks in Columbus.