Brent Burns scored his second goal of the game to tie it 3-3 with 5:49 left in the third period.
Marcus Sorensen scored, and Martin Jones made 36 saves for the Sharks (17-11-3), who were coming off a 3-2 win against the Calgary Flames on Thursday.
The Canucks outshot the Sharks 10-0 in the first five minutes, and Granlund made it 1-0 when he scored on the power play with a redirection 44 seconds into the game.
"They've lost a bunch in a row, they're sitting here rested, they got whacked last game 7-1. All the things set up for them to have an 'A' game, and they did," San Jose coach Peter DeBoer said. "They were outstanding early, and [Jones] gave us a chance to hang around. We found a way to get an important point on a night where we probably didn't deserve one."
Burns used a Tomas Hertl screen to score with a point shot to tie it 1-1 at 10:45 of the first period, but Granlund scored his second shortly after a power play expired at 14:27 to put the Canucks ahead 2-1.
It was the sixth goal for Granlund, who scored 19 in 69 games last season. The two-goal game came after he had a long talk with coach Travis Green during the morning skate.
"He just said he needs more from me, that's it," Granlund said. "I know I can play better."
Boeser made it 3-1 on the power play at 11:56 of the second period. After splitting the defense and hitting the post on a breakaway, Boeser waited at the left face-off dot and the Sedins got the puck back to him for a wrist shot over Jones' left shoulder.
"That was the type of game we wanted to play," Boeser said. "That was a huge two points for us."
Sorensen scored on a rebound with 1:44 left in the second to cut the Vancouver lead to 3-2, and Burns tied it on a point shot that went in off defenseman Alex Biega's skate.
"Every night, you've got to play a good game or you're going to fall behind," said Burns, who has five goals in his past five games.
San Jose center Logan Couture left the game after a hit from Alexander Burmistrov 5:12 into the third period. Burmistrov was given a penalty for interference.
DeBoer did not have an update on Couture, whose 26 points (15 goals, 11 assists) lead the Sharks.