SAN JOSE -- Mikael Granlund and Mike Hoffman scored 1:26 apart early in the third period, and the San Jose Sharks held on to defeat the Vancouver Canucks 4-3 at SAP Center on Saturday.

Granlund and Hoffman each also had an assist, Ty Emberson scored his first NHL goal, and Tomas Hertl and Calen Addison each had two assists for the Sharks (3-16-2), who had lost three straight, including a 3-2 shootout loss to the Montreal Canadiens here Friday. Kaapo Kahkonen made 31 saves.

Vancouver defeated San Jose twice earlier this month, 10-1 here Nov. 2 and 3-1 at Rogers Arena on Nov. 20.

"Think about where we were three weeks ago against this team, and how far we've come and the progress we've made," Sharks coach David Quinn said. "No one's probably faced more adversity than we have, and these guys have stuck together and all they've done is come here and get better every day. I give them a ton of credit."

VAN@SJS: Granlund dazzles with goal early in 3rd

Brock Boeser scored twice, Filip Hronek had a goal and an assist, and J.T. Miller had three assists for the Canucks (14-7-1), who won 5-1 at the Seattle Kraken 5-1 on Friday. Casey DeSmith made 18 saves.

"San Jose has been playing well," Vancouver coach Rick Tocchet said. "We worked hard tonight and we tried at the end to come back. You've got to respect your opponents. This is a learning lesson. Playoff teams don't do this sort of stuff."  

Sam Lafferty of the Canucks had a goal overturned at 3:33 of the first period after the Sharks challenged for goaltender interference. 

Emberson then put San Jose ahead 1-0 at 9:58, scoring with a slap shot through traffic from the blue line off a pass from Hertl.

"It's a dream come true and obviously something that you work a long time for," said Emberson, who played his 13th NHL game. "It was nice to get it in a win."

Hronek tied it 1-1 on the power play at 15:37 with a slap shot through the five-hole.

"I think the lesson for us [is play a] full 60 minutes," Lafferty said. "When we've done that this year, we've had a lot of success. So I think that's the formula for us."

Fabian Zetterlund put the Sharks back in front 2-1 at 14:05 of the second period before Boeser tied it 2-2 at 19:39, scoring a power-play goal on a rebound.

Granlund gave San Jose a 3-2 lead at 22 seconds of the third with his first goal of the season. He carried the puck up the middle, skated in on DeSmith and scored around the goalie’s right pad.

"I just found a lane and obviously got around the [defenseman] there and was able to put the puck in," Granlund said. "Obviously it feels good to get the goal and get on the scoreboard."

Hoffman pushed it to 4-2 on the power play at 1:48 when he scored on a backhand in front.

Boeser's second goal of the game made it 4-3 at 16:49 with DeSmith pulled for the extra attacker.

"After they scored their fourth goal, we gave it everything," Boeser said. "We tried to push back as hard as we could. And, unfortunately, we were a goal short."

NOTES: Quinn Hughes (assist) extended his point streak to 11 games (17 points; four goals, 13 assists) for the Canucks, tying Hronek for the franchise record and the longest streak by a defenseman this season. Vancouver became the first team to have two defensemen with a point streak of at least 11 games in the same season. ... Boeser has 15 goals, tied with Tampa Bay Lightning forward Nikita Kucherov for the NHL lead. ... Granlund entered Saturday with four assists in 13 games since being traded to the Sharks in the offseason deal that sent defenseman Erik Karlsson to the Pittsburgh Penguins. ... With his 110th multipoint game, Hertl passed Owen Nolan for sole possession of sixth in San Jose history.