Artem Zub and Jordan Spence scored, and Leevi Merilainen made 18 saves for the Senators (21-19-5), who were playing the first game of a back-to-back.
Elias Pettersson scored, and Kevin Lankinen made 39 saves for the Canucks (16-25-5), who were coming off a 6-3 loss at the Montreal Canadiens on Monday and are 0-6-2 in their past eight games.
Zub gave the Senators a 1–0 lead at 15:36 of the first period, scoring short side under Lankinen's glove with a wrist shot from the right face-off dot.
Spence scored on a similar play just 15 seconds later to push the lead to 2-0. Following a face-off win by Tim Stutzle in the left circle, Spence took a pass from Drake Batherson and beat Lankinen blocker side off the far post from the top of the right circle.
Pettersson got the Canucks to within 2-1 at 1:17 of the third period. He scored on a one-timer from the slot after Dylan Cozens turned the puck over to Linus Karlsson in the left circle.