HOUSTON (AP) -- Houston rookie Brett Oberholtzer was focused this week on improving after allowing 15 hits and eight runs combined in his previous two starts.
His dedication to turning things around certainly paid off on Sunday.
Oberholtzer pitched a four-hitter and Jason Castro hit an RBI double in the eighth inning, lifting the Astros to a 2-0 win over the Seattle Mariners.
''I worked really hard in the bullpen this week really trying to push my A-plus stuff out of me,'' he said. ''The last couple of starts it really wasn't clicking for me, but today it was.''
The 24-year-old Oberholtzer struck out five and walked one. He did not allow an extra-base hit in his sixth career start and ninth appearance to lower his ERA to 2.79. He had never pitched more than seven innings entering Sunday's game.
He is the first Astro to throw a complete game this season.
Houston manager Bo Porter couldn't have been happier with Oberholtzer's work on Sunday.
''Outstanding with a capital 'O,''' Porter said. ''Oberholtzer was pretty good. He was on the attack from pitch No. 1 ... he decided that he was going to be aggressive and he attacked the strike zone and allowed the defense to play and made them have to swing the bat early in the count.''
Oberholtzer (4-1) and Seattle starter Hisashi Iwakuma matched zeros through seven innings.
Iwakuma scattered six hits and struck out seven. It was the third time in four starts that he'd pitched seven innings.
Charlie Furbush (2-5) took over for Iwakuma in the eighth and Jose Altuve greeted him with a double that rolled into the corner of right field. Castro followed with a ground-rule double that bounced into the bullpen in right-center to give Houston the lead.
Castro advanced to third on a fly out before scoring on a bunt single by pinch-hitter Brandon Barnes. Barnes tried to bunt on the pitch before but it popped foul.
Furbush said he couldn't remember a time when a team tried a squeeze twice in a row.
''You kind of know it's coming,'' he said. ''I just didn't think it was going to happen two times in a row.''
Kyle Seager singled with one out in the ninth. Right fielder L.J. Hoes sprinted to make a sliding catch in foul territory on a ball hit by Kendrys Morales for out No. 2 before Franklin Gutierrez also hit a fly ball caught by Hoes to end it.
Oberholtzer appreciated the work of his defense.
''I went around and tried to thank a couple of them,'' he said. ''I thanked Hoes many times. It was a tremendous effort all-around.''
Hoes was happy he was able to redeem himself after a tough day on offense.
''I just wanted to do something to help the team win,'' he said. ''I had a couple of opportunities early to drive in runs and I didn't do that, but I could still make a good play on defense.''
Trevor Crowe, who was recalled from Triple-A after Saturday night's game, added two hits as the Astros avoid a four-game sweep.
Oberholtzer was perfect in the seventh and eighth innings - with a little help from his defense. Altuve scooped up a hard-hit grounder headed for the outfield and made a leaping throw to beat Dustin Ackley to first base for the first out of the eighth inning.
Oberholtzer retired the first six batters he faced before walking Justin Smoak to start the third. A two-out single by Brad Miller sent Smoak to third, but Oberholtzer struck out Nick Franklin to end the threat.
The Mariners managed one-out singles in both the fourth and the sixth innings, but left both players stranded when they couldn't string together any hits. Oberholtzer pitched a 1-2-3 fifth inning in between those frames.
Houston threatened in the second inning. Matt Dominguez led off the bottom of the inning with a single, but was out at second on a force play on a ball hit by Brett Wallace. A single with two outs by Crowe left Wallace at third. But the Astros came away empty-handed when Hoes grounded out.
Chris Carter walked with two outs in the fourth and reached third on a double by Crowe. Another groundout by Hoes ended that threat, too.
Iwakuma yielded a single to Wallace with one out in the sixth inning before retiring the last five batters he faced, with two strikeouts, before being replaced by Furbush for the eighth.
NOTES: The Mariners recalled former closer Tom Wilhelmsen Triple-A Tacoma on Sunday to begin what is expected to be a number of September callups. He has 24 saves this season. He got the last out of the eighth inning. ... Sunday was the 10th game of 20 in a row for the Astros. Their next day off is Sept. 12. ... Houston opens a three-game series with Minnesota on Monday when Astros right-hander Paul Clemens opposes Andrew Albers. ... Seattle ace Felix Hernandez is scheduled to pitch on Monday against Kansas City's Danny Duffy in the opener of a four-game series.