Markus Granlund, Zack Kassian, Jujhar Khaira and James Neal scored, and Mikko Koskinen made 33 saves for Edmonton (14-6-3), which is 4-1-1 in its past six games. Defensemen Oscar Klefbom and Darnell Nurse each had two assists.
"The last time we played these guys, it was not our best game, obviously, so we felt we had a lot to prove for ourselves and for our fans," Klefbom said of a 6-3 loss in San Jose on Nov. 12. "We were happy and proud the way we responded and the way we played in the first period. We played a solid 60 minutes, and Mikko had a really good game for us as well. It makes it a lot better, just the way we came out and played the first period and set up the full 60 minutes, and I'm really happy about that."
WATCH: [All Oilers vs. Sharks highlights]
Leon Draisaitl had an assist on McDavid's goal to extend his point streak to 13 games (10 goals, 18 assists), tied with Colorado Avalanche center Nathan MacKinnon and Boston Bruins forwards Brad Marchand and David Pastrnak for the longest in the NHL this season. He is one point ahead of McDavid for the NHL lead with 44 points (16 goals, 28 assists).
McDavid has nine goals and 11 assists during his point streak.
Kevin Labanc and Barclay Goodrow scored for San Jose (10-11-1). Martin Jones made 24 saves.
"It was a strange game," Sharks coach Peter DeBoer said. "I thought in the first period we put a lot of pressure on them. When you come out down 3-1 after outshooting them 18-9, that's a tough way to start the game, a tough hole to crawl out of. Having said that, they were heavier and harder than the last time, more desperate than the last time we played them, so they obviously wanted to fix what went wrong for them last time they were in here. I thought they were much more engaged all night."
Granlund scored his first of the season at 3:34 of the first period, converting a pass from Klefbom to give the Oilers a 1-0 lead.