Oberholtzer (4-1) scattered four hits, walked one and struck out three, becoming the first Houston pitcher since Jordan Lyles last September to log a nine-inning shutout.
The rookie left-hander tossed 83-of-113 pitches for strikes in the gem.
The game was scoreless until the eighth when Jose Altuve and Jason Castro smacked back-to-back doubles against Charlie Furbush (2-5).
Castro added an insurance run when he scored on Brandon Barnes' suicide squeeze bunt, helping the Astros snap a five-game skid.
Mariners starter Hasashi Iwakuma matched Oberholtzer with seven scoreless innings, issuing six hits and a walk while striking out seven in a no-decision.