During an active opening period, Carolina built and lost a two-goal advantage and then scored twice more to take a 4-2 lead.
Staal produced the last of those four first-period goals and added two in the third period to give Carolina its first victory of the campaign. The Hurricanes were outscored 9-2 in losing their first two contests.
Skinner and Justin Faulk tallied for Carolina in the game's first 4 minutes, but Buffalo came back to tie it on goals from Cody Hodgson and Jason Pominville.
Carolina went in front for good at 3-2 on a wraparound shot by Skinner with 6:04 to go in the opening period and Staal got into the act with 5:55 remaining. Staal's brother, Jordan, assisted on the first two goals of the period.
After Pominville brought the Sabres within one early in the third, Staal restored a two-goal lead and then scored into an empty net with 1:28 to play.
Buffalo had been trying to open a season at 3-0 for the first time in five years.
Cam Ward picked up the win by making 30 saves. Jhonas Enroth stopped 27-of-32 shots for the Sabres.