Bo Horvat and Justin Dowling scored, and Thatcher Demko made 38 saves for the Canucks (1-2-1), who played without defenseman Quinn Hughes because of an undisclosed injury. Vancouver coach Travis Green said Hughes was close to playing and doesn't expect him to be out long.
"We didn't play good enough to win, that's how I'd diagnose it," Green said. "That's a fast team over there. I thought that we struggled with their speed a little bit at times. And usually when you struggle with a team's speed, it's because you are not very good with the puck. I just don't think we were good enough to win tonight."
The Canucks outshot the Sabres 5-0 in the first six minutes, and Horvat gave them a 1-0 lead at 5:57 of the first period. Tanner Pearson won a battle behind the net before passing to Horvat in the slot.
Okposo scored his 200th NHL goal at 8:22 with a shot from the right circle to tie it 1-1.
Dowling put the Canucks back in front at 16:01 when he redirected Luke Schenn's point shot to make it 2-1.
Girgensons tipped in a shot from Okposo at 17:37 of the second period to tie it 2-2.
"It's just another brick in the foundation of the way we want to play," Okposo said. "That's something that you have to learn how to do as a team. You're not going to have it every night; we play 82 games. But to find a way to stay in it and slog through a bit of your 'B game' until you can find the legs, find your 'A game,' I think we did a really good job of that. So, that's something that is a good lesson for us to learn."
Skinner gave the Sabres a 3-2 lead at 3:33 of the third period, lifting a backhander from his knees.
Thompson scored 23 seconds later at 3:56 to make it 4-2, sweeping in a loose puck after Demko couldn't control a rebound.
"I think essentially what led to the goals, us not executing, us not moving our feet," Dowling said. "That's not our game. Our game is what was going on in the first 10 minutes of the first period. Just a mentality, it's a mindset. We've got to learn how to keep that going for 60 minutes."