Daniel Sedin and Ryan Kesler also scored for the Canucks, who won their second straight and for the fifth time in six games. Roberto Luongo made 33 saves and improved to 9-1-1 in his last 11 games.
Logan Couture and Joe Thornton scored for the Sharks, who lost their second straight after a four-game winning streak. Antti Niemi stopped 28 shots.
The Sharks were unable to take advantage of two power plays in the final five minutes of regulation.
Daniel Sedin gave the Canucks a 1-0 lead midway through the first period, picking up a pass from twin brother Henrik behind the net and forcing a wraparound into the net.
Kesler made it 2-0 early in the second with a power-play goal, scoring off a rebound of Alexander Edler's shot. Kesler has scored in consecutive games twice this season.
Couture brought the Sharks within 2-1 midway through the second off an odd-man rush he created with an intercepted pass. He played give-and-go with Patrick Marleau for the score.
Thornton scored a power-play goal five minutes later to tie it. Marleau blocked Edler from getting to the puck behind the net following a faceoff, allowing Thornton a clear path to the net.
NOTES: Daniel Sedin has three goals and four assists in his last six games. Henrik Sedin has points in 11 of 13 games. ... Sharks D Douglas Murray returned after missing 10 games with a wrist injury. ... Canucks F Chris Higgins didn't make the trip because of a swollen hand. ... Sharks D Colin White was out with a lower body injury. ... San Jose will play at Vancouver on Monday. ... The Sharks outshot Vancouver 16-4 in the third period. ... The Canucks are 9-2-1 in their last 12 road games.