Skinner had two quick goals in transition early in the second period and later added an assist, lifting the Hurricanes to a 5-2 win.
Skinner's eighth multipoint game of the season, in which Brock McGinn also scored twice, moved Carolina to within three points of the Philadelphia Flyers for the eighth and last playoff spot in the Eastern Conference with two games in hand.
Carolina swept its three-game series against Buffalo and won its third straight game overall. The Hurricanes are 14-4-1 at home, including 13-1-1 in the last 15 games in Raleigh.
Skinner's first goal gave him his 300th NHL point.
Carolina's Cam Ward stopped 36 shots while playing in his 600th NHL game, all with the Hurricanes.
Buffalo's Anders Nilsson had 33 saves.
Victor Rask scored Carolina's other goal while Jordan Staal added two assists for the Hurricanes.
"We got some good momentum swings for sure, and then we gave it a little bit back at times," said Hurricanes coach Bill Peters, who was celebrating his 52nd birthday. "(Skinner) got us going for sure. That's a good way to get your 300th and then follow it right up. He did a lot of good things."
William Carrier and Brian Gionta scored for Buffalo.
Buffalo took advantage of a mistake to claim the lead 4:24 into the game. Carolina defenseman Jaccob Slavin, attempting to clear from the right corner, instead sent the puck straight to the Sabres' Ryan O'Reilly. He set up Carrier for a tip-in from the left side of the net.
"We're playing a quick team and a fast team," Buffalo coach Dan Bylsma said. "Especially in the second period, playing with the puck and managing the puck is such a huge factor. They use it to their advantage and showed their speed, showed their puck movement."
Skinner put the Hurricanes ahead with two goals in 55 seconds. At 1:48 of the second, he beat Nilsson glove side on a rush, and then at 2:43, he beat Nilsson stick side from the right circle.
"It's a good feeling to contribute," said Skinner, who has 17 goals and 18 assists this season. "We were a little sloppy in the first period and picked it up in the second. It's good to generate some momentum."
McGinn then made it 3-1 at 6:51, taking a pass from Elias Lindholm in the low slot and lifting it over Nilsson to the upper left corner of the net.
Gionta halved the lead on a short-handed rush at 11:49, picking up the loose puck on a ricochet from behind the goal and taking advantage when Ward lost his stick.
Rask gave the Hurricanes some breathing room at 4:15 of the third, following Noah Hanifin's shot that caromed off the end boards to beat Nilsson in traffic. Skinner had the secondary assist.
McGinn sealed it at 7:58, scoring from the low slot on Staal's pass from behind the net.
Buffalo D Zach Bogosian played in his 500th game. ... Ward is fifth among active goalies in games played. ... Buffalo D Josh Gorges (hip) missed his second straight game while G Robin Lehner (illness) was out for his third. ... RW Ty Rattie, D Klas Dahlbeck and D Ryan Murphy were healthy scratches for Carolina. ... Staal extended his points streak to three games with his assist on Skinner's first goal.
Sabres: Host Dallas on Monday.
Hurricanes: Host the New York Islanders on Saturday in the finale of their four-game homestand.