Zach Boychuk and Brandon Sutter also scored for the Hurricanes, who have won three of their last four. Staal added an assist in the victory.
Michael Grabner and Andrew MacDonald tallied for the Islanders, who will head into the break as losers in five of their last six. Rick DiPietro allowed all four Carolina goals on 31 shots.
Using an Islanders defender as a screen, Boychuk roofed a shot from the slot to give the Hurricanes a 1-0 lead with 5:17 remaining in the first period.
New York tied the game 31 seconds into the second period when Frans Nielsen sent a pass from the end board in front to Grabner, who made a quick deke in front of the net to beat Ward with a backhand.
But Staal scored twice in an 88-second span to give Carolina a two-goal lead.
Staal’s poke-check in the New York zone started a rush that he finished by lifting a puck over DiPietro from the left side of the net, where Erik Cole had found him with a pass.
Staal made it 3-1 at 7:23 of the second, getting his stick on Joe Corvo’s slap shot from the point and deflecting it past DiPietro.
That was all the scoring until Sutter iced the victory with 4:55 remaining in the third period, getting behind the defense on a pass from Jiri Tlusty and beating DiPietro on the backhand.
MacDonald scored the Islanders’ second goal on a snap shot with 1:21 remaining in the game.
The Hurricanes will host this weekend’s All Star festivities, but they are off until Tuesday’s game against visiting Boston. New York’s next game is also Tuesday, on the road in Atlanta…Cole had two assists…Carolina went 0-for-4 on the power play, while the Islanders were 0-for-2.