Ryan Donato scored in his third straight game for Seattle (10-17-3), which was held to 17 shots on goal. Chris Driedger made 36 saves.
Donato made it 1-0 for the Kraken at 4:18 of the first period when his shot hit Skinner then trickled under his arm and into the net.
"It was a lot of ways a pretty tight hockey game," Kraken coach Dave Hakstol said. "Defensively, we didn't give up. The first period, I think I probably had us even in scoring chances, pretty even. We couldn't get a push in the second and third periods."
McCann scored at 9:07 to make it 2-0 when Jordan Eberle sent him a backhand pass from behind the Oilers net.
The Oilers cut the lead to 2-1 at 13:05 on an Evan Bouchard slap shot through traffic.
Foegele made it 2-2 at 17:08 of the first period when he scored on the power play off a rebound from a Kailer Yamamoto shot.
"The boys dug in extremely hard today," Foegele said. "I thought we played pretty simple and fast, and you know it shows how dangerous we can be … and you know just keep building off doing the right things like that and pretty happy that we got that win."
The Oilers outshot the Kraken 20-7 in the first period.
"We were continuing to attack," Foegele said. "It's not fun to play against a team who's constantly attacking and playing hard and eventually you keep pounding that rock, that rock's gonna chip, that's what happened today."
Colton Sceviour gave the Oilers their first lead 3-2 at 12:52 of the second period after McDavid knocked the puck loose behind the Seattle goal line, carried it to the front, and slid it to Sceviour.