VANCOUVER -- Jake Virtanen scored two goals, and Thatcher Demko made 32 saves for the Vancouver Canucks in a 3-1 win against the Toronto Maple Leafs at Rogers Arena on Thursday.
Bo Horvat also scored for the Canucks (10-15-2), who have won two of their past three games.
"It was one of our better games of the year," coach Travis Green said. "That's a really good hockey team over there and it's nice to get a win. I love how our team responded."
Vancouver played without center Elias Pettersson, who was a late scratch because of an upper-body injury and is day to day. Pettersson has scored 21 points (10 goals, 11 assists) in 26 games.
Michael Hutchinson made 24 saves for the Maple Leafs (18-5-2), who had won four in a row and lost in regulation for the third time in 20 games (15-3-2).
Toronto played the second of back-to-back games after it completed a three-game sweep of the Edmonton Oilers with a 6-1 win Wednesday.
"It's disappointing," Maple Leafs captain John Tavares said. "We really wanted to come in off of three really good games to build on that, to not take this one lightly and really continue to find growth and challenge ourselves. Obviously, it didn't go our way. We had some opportunities. We've probably got to make it a little more difficult around their net."
Virtanen gave the Canucks a 1-0 lead at 2:59 of the first period with his first goal and point in 18 games. He skated around defenseman Justin Holl off the rush for a shot in tight that bounced off and over Hutchinson before being knocked in by Holl as he tried to clear the puck.
"I don't think that fatigue was the main factor," Holl said. "I think Vancouver executed their game plan really well. They didn't give us a lot of time in the offensive zone. They were hard on pucks, they were moving it well. We have played a lot of games recently, but that definitely wasn't the reason. I thought we just got outplayed."
Video: TOR@VAN: Virtanen opens the scoring
Pierre Engvall tied it 1-1 at 17:15 of the first period when he split two defenders and cut into the slot before shooting over Demko's glove from the left hash marks.
Virtanen gave the Canucks a 2-1 lead on their only power play at 11:29 of the second period, 12 seconds after Demko made a stacked-pads save against Ilya Mikheyev on a 2-on-1 shorthanded rush. Virtanen scored on wrist shot off the rush from the bottom of the right face-off circle.
Virtanen has three goals in 22 games and has been a healthy scratch five times after he scored 18 goals in 69 games last season.
"I feel like the last couple games I've gotten my confidence back," Virtanen said. "I felt like I didn't have it as much earlier in the season, but I feel it right now. Even in practice, I feel like I've just been handling the puck better, skating a little bit quicker, getting places quicker."
Demko made a tough save on a deflection by Auston Matthews less than a minute before Horvat scored at 7:56 of the third period with a quick release from the slot over Hutchinson's blocker for the 3-1 final.
Video: TOR@VAN: Horvat wires home a wrist shot
"The biggest takeaway from the game is going into the third period up one and being able to not only play smart but continue playing our game, and continue playing aggressive and keeping the puck down in their end," Demko said. "A huge step in the right direction for our group."
NOTES: Maple Leafs forward William Nylander had his four-game goal streak end. He scored five goals during that stretch. … Mikheyev has a three-game point streak (one goal, two assists). … Canucks forward Marc Michaelis had one shot on goal in 12:16 of ice time in his NHL debut. He was signed as an undrafted free agent March 19, 2020. … Vancouver defenseman Quinn Hughes played his 100th NHL game and had one assist. He leads all NHL defensemen with 21 assists this season.
Video: Virtanen scores twice to propel Canucks to a 3-1 win