Seattle starter Hisashi Iwakuma matched zeros with Oberholtzer for seven innings before the Astros struck for two runs in an eighth inning sparked by Jose Altuve's leadoff double.
"I told Altuve in the eighth, just give me one [run]," Oberholtzer said.
Houston had scored only eight runs in its previous five games, all losses. When Altuve scored on Jason Castro's double, that was all that Oberholtzer needed.
"I tried to push my A-plus stuff out of me," Oberholtzer said. "I got back to my strengths -- throwing fastball, changeup. The last couple of starts, it wasn't clicking, but today it was."
The 24-year-old rookie was called up July 27. His last start, Monday against the Chicago White Sox, was his worst in the Majors, giving up eight hits and four earned runs in 5 1/3 innings.
"I was able to locate my fastball [today]," he said. "I was able to throw my off-speed stuff off of that."
That was enough to limit Seattle to just four singles. Only one Mariner reached second base and that was Justin Smoak, who led off the third with a walk and raced to second on Brad Miller's two-out single.
Oberholtzer struck out five and allowed just the one walk.
"He was on the attack from pitch No. 1," Houston manager Bo Porter said. "He decided he was going to be aggressive and attack the strike zone. He made them swing the bat early in the count."
"He was getting ahead," said Castro. "That enabled him to get some guys to chase some fastballs out of the zone a little bit that put him even more ahead. Then he used his breaking stuff to keep them off balance. He was able to dictate at-bats. He knew exactly what he wanted to do. It made my job easy."
The Mariners rarely hit the ball hard. The best defensive play by the Astros occurred when right fielder L.J. Hoes made a sliding catch in foul territory with one on and one out in the ninth.
"Their guy was really good today," Seattle manager Eric Wedge said. "He was a strike thrower, he had good stuff, used all of his pitches. I felt like he could throw anything at any time. He was equally effective against right-handers and left-handers. I was impressed."
"With his fastball at 90 mph, it's not the typical 90," said Mariners second baseman Nick Franklin. "It's a little sneaky. But I don't think he was nibbling. More than anything, he was coming right after us with the fastball and attacking us late with the off-speed and trying to get us to chase upstairs."
Oberholtzer threw 113 pitches, 83 of them for strikes, which allowed him to pitch the complete game.
He said it was the third or fourth inning before he was sure he had something special going. Castro said he knew right away.
"At one point, I looked up at the scoreboard and the strike to ball ratio was outrageous." Castro said. "That's always a good sign. Right away I could tell he was really trusting his stuff. Usually, guys start well and then tire a little bit. He didn't show signs of that at all today.
"He's got a good idea of what he's doing out there. He was pounding the strike zone, getting ahead and able to do more. That plays a big role in keeping the pitch count down."
Porter never even warmed up a reliever.
"There was no doubt whatsoever," Porter said of sending Oberholtzer out for the ninth inning. "He had pitched so well up until that point. It was pretty much his game unless two runners got on base. He was in control of the game from pitch No. 1."
Oberholtzer figured his manager would give him the chance to finish the game.
"My pitch count was low, so I figured I'd be able to get nine," he said. "You never really feel like the game's in the bag. If you do, the next thing you know, there's four or five runs on the board."
"I looked up and saw nobody warming up," Castro said. "I was not surprised at all. Bo was trusting him to go all the way. He really didn't deviate all game in how he was pitching."
Castro, after doubling home Altuve, moved to third on a fly out and scored on pinch-hitter Brandon Barnes' suicide squeeze.
"You've got a guy who can handle the bat, who can hit lefties pretty good," Porter said of Barnes. "He threw ball one and I knew this would be a good time to do it. He fouled it off and we did it back-to-back."
Seattle's Iwakuma had left after seven scoreless innings and the Astros scored both runs off Charlie Furbush.
Altuve slumped through August with a .195 batting average, but began September with three of Houston's nine hits Sunday.
"He swung the bat a little bit better [Saturday]," Porter said. "Today he was back to his old ways. He had been chasing some balls down out of the zone. He got the ball a little more elevated today and put some good swings on them."