Tanner Pearson scored, and Thatcher Demko made 25 saves for the Canucks (19-23-3), who are 1-5-0 in their past six and are 14 points behind the Montreal Canadiens for fourth in the North.
"You can tell by how hard they're playing that they want to win badly," Canucks coach Travis Green said of his team. "It's a good hockey team over there. It's two of our better periods (in the first and second) that we've probably played coming out of COVID, and they'll be disappointed that they lost, that's for sure. That's the nature of the beast, you should be."
Vancouver, which had an 18-day pause through April 18 due to a COVID-19 outbreak within the team, finished its road trip 0-4-0.
"We wanted to come up with at least a win on this road trip and it is disappointing," Canucks captain Bo Horvat said. "At the same time, we can't dwell on it and just say we're going to pack it in. We got to still come to the rink and be willing to play these last 11 games and play hard. I mean, we're not out of it until we're mathematically out of it, and as long as you still have a chance we've got to come to the rink every single day and play hard."
The Canucks went up 1-0 at 13:28 of the first period when Pearson took a pass from Quinn Hughes near the right boards and scored off the left post.
Matthews tied it 1-1 at 15:24 when he took a pass from Marner from below the goal line and shot from the slot off the stick off Vancouver forward J.T. Miller.
Toronto took a 2-1 lead at 3:50 of the second period when Marner stole the puck from Alexander Edler behind the net and passed to Matthews, who scored from the right face-off dot. The goal gave Matthews 17 goals in 17 games.
"Wow, it's unbelievable. He's definitely a one-of-a-kind player," Galchenyuk said of Matthews. "To see the way he shoots the puck and makes plays, it's tremendous. It's fun to watch him."
Adam Brooks deflected a point shot from Justin Holl in the slot at 4:55 of the third period to make it 3-1. Jason Spezza got an assist, extending his point streak to five games.
Toronto extended the lead to 4-1 at 11:39 when Alex Galchenyuk put in a rebound at the top of the goal crease after Demko stopped William Nylander.