Ryan Kesler had a goal and assist, Alex Burrows also scored, and Mason Raymond added three assists as Vancouver won its sixth straight game.
Roberto Luongo made 31 saves for the Canucks, who have only two regulation losses in the last two months (21-2-6). They extended their lead atop the NHL to four points, and remained nine points up on Detroit for first in the Western Conference.
Nick Foligno and Jason Spezza scored less than 2 minutes apart in the second period to pull Ottawa to 3-2. The Senators hit two posts before the period ended, but failed to convert an early third period power play and finished 0 for 5 with the man advantage.
Brian Elliott made 26 saves for the Senators, who have lost 10 straight (0-7-2).
Burrows opened the scoring on a walkout from behind the net 8:50 into the game, and Kesler doubled the lead 1:10 later, firing his 31st goal of the season over Elliott's glove just 20 seconds after hitting the post on a similar attempt.
Samuelsson converted a nice goalmouth feed from Kesler 2:12 into the game - the pass was made with another players stick after breaking his own and grabbing one off the bench as the play went up ice. But the Canucks, who lost defenseman Keith Ballard to a leg injury 2:23 in, backed off and Ottawa got back in.
First it was Foligno spinning off a Dan Hamhuis check in the slot and lifting a backhand over Luongo's glove at 5:30. Then Spezza finished off a rare 3-on-0 breakaway by banging in his own rebound after Luongo stopped him 1:47 later.
Sergei Gonchar rang a shot off the post on a power play, and Milan Michalek hit iron behind Luongo on a 2-on-1 shorthanded rush before the period ended.
Notes: Ballard left after being taken down awkwardly from behind by Michalek and didn't put any weight on his right foot as he hopped to the locker room. ... Senators C Jesse Winchester left late in the first period with a lower-body injury. ... Samuelsson, who was named the NHL's second star for last week, has nine points his last four games. ... Ottawa LW Jarkko Ruutu was a healthy scratch for the second straight game. ... Canucks D Andrew Alberts returned after missing eight games with a shoulder injury and rookie Chris Tanev was scratched.