VANCOUVER, British Columbia -- For one game at least, Zack Kassian lived up to his billing as a power forward who can produce points.
"It was one of those games (where) it seemed the puck followed me," Kassian said. "It's nice personally, but it's even better we keep this streak going."
The Canucks have earned two consecutive wins for the first time since mid-January. Vancouver pulled within three points of eighth-place Phoenix, and one point of ninth-place Dallas in the race for the second wild-card playoff spot in the Western Conference.
The Sabres, last in the NHL, suffered their eighth loss in the past 10 games as they squandered an early 2-0 lead.
The Sabres went ahead 2-0 only 3:29 into the game, but the score was tied 2-2 after the first period and the Canucks led 3-2 following the second.
"In this league you can't play good sometimes," Sabres coach Ted Nolan said. "You've got to play good all the time. That's a lesson to learn and something we have to do to move forward."
Kassian has faced criticism since he was traded to Vancouver from the Sabres at the NHL trade deadline in February 2012 in the four-player deal that saw former Canucks fan favorite Cody Hodgson head to Buffalo.
Kassian, Buffalo's top 2009 draft pick (13th overall) excelled offensively two days after saying he is playing primarily a checking role now while Hodgson is primarily an offensive player.
Hodgson, Vancouver's first choice (10th overall) in 2008, went without a point while the Sabres were outplayed for most of the game.
"I'm excited for every game, but obviously you want to play hard against your old team," Kassian said. "You definitely want to get the win, but it's nice when you play well individually and as a line."
Matthias, who was acquired in the Roberto Luongo trade from Florida, also had two assists while Richardson had one.
The Canucks had not posted two straight wins since beating the Calgary Flames on Jan. 18, when coach John Tortorella drew a suspension for charging their dressing room between the first and second periods, and Edmonton Oilers on Jan. 21.
Vancouver goaltender Eddie Lack overcame a slow start to earn the win. After allowing goals on Buffalo's first and third shots of the game, Lack was sharp and finished with 16 saves.
"The team did a great job bouncing back," Lack said. "I felt like I wasn't really tracking the puck well the first half of the game, but then I just kind of settled down and felt better after that."
Vancouver's quick rally from its early deficit spoiled a strong effort from rookie Buffalo goaltender Nathan Lieuwen, a 22-year-old Abbotsford, British Columbia, native who made just his second NHL career start and third appearance after being promoted from Rochester of the AHL on March 16.
He made 32 saves as his club was outshot 36-18.
"That's frustrating and that's hockey," he said. "You get some good bounces and you do good things and you make mistakes, so I'll definitely learn from it."
Weber scored the winning goal just 1:40 into the second period as he put a shot through Lieuwen's legs to give the Canucks a 3-2 lead. Sabres defenseman Mike Weber was close to his Canuck namesake on the play, but Lieuwen said the puck went straight in.
"I thought I had it and, obviously, there was a hole," Lieuwen said. "I don't know what to tell you. That's obviously one that I feel I can obviously save. What a terrible night for that to go in."
The goal spoiled his "dream come true" of playing in Vancouver, where he has "tons of family."
Ennis was also left frustrated as he watched the Sabres' lead vanish after he had McBain had put them ahead.
"We heard (Lack) has been shaky, so we wanted to get on him early, and we did," Ennis said.
Kassian was not around for the final horn because he took a puck between the eyes, for the second time on the night, with 1:32 left in the game. He needed "about 10 stitches" to repair a cut.
"So my face isn't getting any prettier, that's for sure," he said.
Vancouver lost Henrik Sedin to an apparent knee injury late in the second period as he collided with a fallen Buffalo player behind the Sabres net. "I went to hit a guy and he came back off the boards and he fell on top of me, so we'll see how it is (Monday)," Sedin said. The mishap occurred after the Canucks and NHL honored the Canucks captain for his 1,000th NHL game, played March 12 in Winnipeg. NHL senior vice president of hockey operations Jim Gregory represented the league. ... Vancouver forwards Ryan Kesler and Daniel Sedin returned after suffering injuries earlier this month, but Alex Burrows missed the game with a hand injury suffered Thursday against Nashville. ... Hodgson played his 200th NHL regular-season game. ... Lack made his 35th start of the season. At the outset of the season, Tortorella indicated he would get 15-20 starts. ... Buffalo defenseman Alexander Sulzer, who was acquired with Hodgson from the Canucks, missed his fifth consecutive game with an upper-body injury. ... Sabres starting goaltender Michal Neuvirth, acquired from Washington at the trade deadline, also missed his fourth consecutive game, with a lower-body ailment. ... Neuvirth and Matt Hackett, who dressed as Buffalo's backup, were traded for each other in the 2007-08 Ontario Hockey League season. Neuvirth went to Windsor from Plymouth while Hackett went the other way.