"It's no secret Jhonas was our best player," Buffalo coach Lindy Ruff said.
Chris Butler also scored and Drew Stafford had two assists for the Sabres, who won a tense matchup with a postseason feel -- and plenty of playoff implications. Buffalo, which has 90 points, kept hold of seventh place in the Eastern Conference and put the Hurricanes' postseason hopes in jeopardy.
"It is huge. I'm not going to sidestep that one -- it is a big win for us," Ruff said. "They win, and it's a lot different scenario in the standings. Us winning, it gave us a little bit of an edge again."
Eric Staal scored for Carolina, which had its three-game winning streak snapped. The Hurricanes -- who had won seven of nine -- earned one point to move to 87, two behind the eighth-place New York Rangers, with three games left for both teams.
"The fact of the matter is, we've been feeling like this for the last two weeks, three weeks, that you had to win that game tonight," Carolina coach Paul Maurice said. "There seems, in every one of these, you're going to lose a game that feels like it's the end, and you can't let it be that way. We'll deal with that emotion (Monday) and get back on our horse the next day."
Gragnani's winner came when he fired a wrist shot from the boards that appeared to ricochet off the sticks of two Carolina skaters and past goalie Cam Ward, who also was pestered by Stafford near the net.
"It appeared to be going wide, and it got deflected off of something," Ward said. "I'm not sure what it hit, but they got a lucky break."
Gragnani said it was "a lucky break on the goal, but we'll take it."
Ward finished with 29 saves in his 13th straight start. Had the Hurricanes won in regulation - and they had several chances to do it -- they would have moved past Buffalo and into eighth place. Carolina went 0 for 6 on power-play chances, including 1 minute, 1 second with a 5-on-3 advantage and one critical 2-minute stretch in the final 3 1/2 minutes.
"We had as good a third period ... as we've had, and (Enroth) made good saves," Maurice said. "You can't complain about the effort or how they played. We generated enough to score a bunch of goals and didn't, but their goaltender made the saves."
Their struggles were in large part due to Enroth, who was spectacular in his third straight start in place of injured goalie Ryan Miller. His latest effort came less than 24 hours after he gave up five goals in an overtime loss at Washington.
"Jhonas played great, and you need that (at) this time of year. For me, it was a bounce-back game for him. A lot of pucks weren't sticking to him (against the Capitals) and tonight, I think he just made a statement again, 'I can shake anything off."'
The only shot to get past him was a fluky one. Staal tied it at 1 with 14:10 left in the second when he skated along the left boards and threw the puck toward Enroth. With Chad LaRose crashing the net, Staal's shot bounced off defenseman Andrej Sekera's skate and over Enroth's shoulder.
"A bad bounce, but it happens sometimes," Enroth said.
Butler gave Buffalo an early lead midway through the first by finishing a 3-on-2 rush with his first goal in 15 months. Trailing the play, he took a cross-ice feed from Stafford and snapped the puck high past Ward from the right circle. At that point, the Hurricanes had managed only one shot on goal.
"I thought both teams were pretty tight," Maurice said. "We didn't put the puck on the net. We tried to find some people on the way to the net. ... I thought halfway through the game, we started doing a much better job of that and generated a lot more. Probably our poorest chance went in tonight, and the best ones stayed out."
Material from wire services and team media was used in this report.
1 - 0 BUF