Kiefer Sherwood and Max Sasson scored for the Canucks (11-17-3), who have lost two in a row and six of seven (1-5-1).
Thatcher Demko, who returned after missing the past 12 games with a lower-body injury, made 12 saves.
“Thought we played well. I thought I could have been better, too. It kind of comes down to that one extra save, so, yeah, it's frustrating for sure,” Demko said. “I felt ready to play. Definitely didn't feel perfect tonight. Definitely need to be better.”
Lyon was making his first start since Nov. 28, but he finished the games in Calgary and Edmonton, picking up the overtime win against the Oilers after goalie Colten Ellis sustained a concussion on a collision late in the first period.
“I kind of had a little bit of a rhythm and you kind of have a baseline on what you want to do, and how you want to be when you get in the net,” Lyon said. “The first period was a grind for me and the guys did a great job of keeping them limited. We played a really sharp first period, and we played a great second period, and then we just found a way to win at the end."
Buffalo, which surrendered the tying goal with two seconds left in Edmonton on Tuesday, blocked 26 shots, including a couple of crucial ones by Jordan Greenway and Tyson Kozak in the final minutes with Demko pulled for an extra attacker.
“Gutsy effort,” Sabres coach Lindy Ruff said. “The blocked shots at the end, incredible desperation.”
Dahlin opened the scoring for the Sabres at 7:36 of the first period. Ryan McLeod sent a wobbling pass from below the goal line to Dahlin above the left face-off circle, where he beat Demko with a one-timer that appeared to dip.
“That was a knuckle puck,” Dahlin said.
It’s one Demko still thought he should have saved.
“Not super happy with that,” Demko said. “Felt a little late on it, maybe a little slow. Maybe just trying to acclimate back to game speed.”
Sherwood tied it 1-1 with his first goal in 11 games while on a power play at 19:49. He backhanded a rebound off the skate of Buffalo defenseman Conor Timmins between Lyon's pads after a failed clearing attempt.
It was the Canucks' first power-play goal in seven games, ending a 0-for-21 slump.
“It's tough right now, but you can't get swayed by the results, right?” Sherwood said. “We just try to focus on the process and eventually the things will go in. We obviously deserve tonight but continue to fight for each other and build towards our identity.”