BUFFALO, N.Y. -- Derek Dorsett had two goals and an assist to lead the Vancouver Canucks to a 4-2 win over the Buffalo Sabres on Friday night.

The Canucks dominated the flow of play throughout and outshot Buffalo 41-22.

Daniel Sedin had the game-winner and Markus Granlund also scored for Vancouver (3-3-1), which bounced back from a 6-3 loss to Boston on Thursday. Jacob Markstrom made 20 saves.

Justin Bailey and Jack Eichel scored for Buffalo (1-5-2). Chad Johnson made 37 saves.

Bailey opened the scoring one minute into the game following a terrific feed by Ryan O'Reilly. O'Reilly spun along the boards and fired a pass to Bailey in front of the Vancouver net, and Bailey lifted a backhand shot for his second goal of the season.

Granlund evened the score with 8:04 left in the first. Following an initial stop by Johnson, Granlund put the rebound off the left post and in to make it 1-1.

Even with the Sabres badly outshot in the first -- Vancouver held a 17-5 edge in shots -- Eichel made it 2-1 before the end of the period on a terrific one-man effort. Eichel took the puck all the way from his own end and put the puck through Canucks defenseman Ben Hutton's legs before beating Markstrom with a wrist shot with 2:40 left in the first.

The Canucks continued to pepper the Sabres with shots in the second and it eventually paid off on the scoreboard.

Dorsett made it 2-2 with a shorthanded goal 5:52 into the period. It was the sixth shorthanded goal surrendered by the Sabres in eight games.

Sedin scored the game-winner 8:10 into the second by going hard to the net and finishing a bouncing puck after a feed from brother Henrik Sedin. The Sabres challenged the play, which was upheld following a lengthy video review.

Dorsett added an empty-net goal with 21.7 seconds remaining.

NOTES: C Zemgus Girgensons, D Josh Gorges and D Taylor Fedun were scratched for the Sabres. Girgensons was out after suffering a lower-body injury in the team's loss on Tuesday to the Vegas Golden Knights. ... D Patrick Wiercioch, D Erik Gudbranson and C Michael Chaput were scratched for the Canucks. ... This was Sabres RW Kyle Okposo's 600th career game. ... This was the first of two meetings between the two teams this season. The second and final meeting takes place on Jan. 25 in Vancouver. ... Canucks LW Thomas Vanek played in eight seasons for the Sabres from 2005-13 after being selected fifth overall in 2003.