Casey Mittelstadt also had a goal and an assist, and Craig Anderson made 30 saves for Buffalo (22-33-8), which has won four of five.
"We're starting to learn a little bit how to kind of bring it every night," Mittelstadt said. "We knew it was going to be a competitive game, and we wanted to end the road trip on a good note. It's a long flight home."
J.T. Miller had a goal and an assist, and Demko made 26 saves for Vancouver (30-26-8), which has lost three straight and five of its past six (1-3-2).
"I don't want to say the word embarrassing. I don't think that's the right word, but it's hard to swallow," Miller said. "Because for me, I think it's effort based. I think it's will, wanting to play in the playoffs and wanting to beat your opponent. We talked about how late in the season every team is good, there's no excuses. I think they wanted it more than we did today."
Mittelstadt put the Sabres ahead 1-0 at 1:50 of the first period, skating into the zone between Oliver Ekman-Larsson and Brad Hunt and shooting glove side from the slot. It was his first point in seven games.
"Obviously, it's been a bit of a tough stretch for me, but that one for sure felt good," Mittelstadt said. "Anytime you can get a goal on your first shift, it's a good start."