Jason Pominville cut Pittsburgh's lead to 3-1 at 11:18 of the third period. The goal was Buffalo's first in 232:09 dating to Nov. 24, when Kyle Okposo scored into an empty net with 51 seconds remaining in a 3-1 win against the Edmonton Oilers.
"I think, mentally, hopefully it feels good for the team to get one and not have to talk about this for, hopefully, a little while," Pominville said. "We still have work to do and we know [that]. We have to be better and that was a step, but again, there are still a few more steps we need to take."
Phil Kessel made it 4-1 at 13:14 before Sidney Crosby pushed it to 5-1 by scoring into an empty net at 18:58.
Crosby, who had two points (one goal, one assist) has at least one goal in each of his past five games after scoring once in his previous 15. He has 13 points (six goals, seven assists) during a six-game point streak.
"I don't think there's any special formula," Crosby said. "I think you go to the net hard. You get pucks to the net. All those habits, all those same things. And make sure you find a way to execute. I think our mindset has been to get more pucks and more people to the net and we've done that."
The Sabres (6-17-4) have lost 11 of their past 12 games (1-9-2). Despite losing by four goals for a second straight night, Buffalo coach Phil Housley was pleased with his team's effort even if the execution wasn't always there.
"I think we came with a lot of emotion," Housley said. "They played for one another tonight. … We can't make mistakes right now because of the position we're in. We're not getting enough run support to support mistakes."
Malkin scored with 1:16 remaining in the first period to give the Penguins a 1-0 lead. He carried the puck down the far wall and shot over a sliding Marco Scandella and Chad Johnson's glove.
Hagelin extended the lead to 2-0 when he carried the puck above Buffalo's crease. Johnson fell forward while tracking the play, allowing Hagelin to shoot over him at 5:36 of the second period.
Hornqvist made it 3-0 during a 4-on-3 power play with 1:00 remaining in the second. Crosby stickhandled around Jack Eichel and slid a pass for Hornqvist to tap past Johnson for his 10th goal of the season.