Harang (3-6) struck out a season-high 10, the 12th time in his career he had 10 Ks with no walks. It was his 15th career complete game and eighth shutout. He also beat San Diego 9-0 on May 27.
Harang allowed a two-out infield single to deep short by J.D. Martinez in the second inning. He then retired 16 of the next 17 batters. The only Astros batter to reach during that span was Brandon Barnes on a sixth-inning error.
Martinez also had the other hit, an inning-opening single to left in the seventh. He never advanced past first.
Raul Ibanez hit his team-leading 13th home run his second in an many nights in the sixth inning.
It was his 74th career home run at Safeco Field, the most by any player.
Bud Norris (5-6) went seven innings for the Astros. He allowed three runs on five hits, walking one and striking out six. The Mariners have eight shutouts this season, tied with Cleveland for the most in the American League.
The Astros have been shut out a league-high seven times.
Spotty defense by the Astros played a role in both the Mariners' first two runs.
In the first, Endy Chavez opened with a double into the right-field corner and advanced to third when shortstop Ronny Cedeno missed the relay. After two outs, Chavez finally scored on Norris' wild pitch, on a 1-2 pitch to Ibanez.
Then in the second inning it happened again. Nick Franklin opened with a double to right and right-fielder Trevor Crowe's throw to second was wide of Cedeno for another error. The Astros have committed a major-league-high 49 errors.
Franklin advanced to third and scored on Michael Saunders' sac-fly to deep left.
Ibanez's home run gave the Mariners 73 this season. They account for 109 of the team's 235 runs, 46.2 percent.
The Mariners added a run in the eighth. Chavez opened with a double and scored on Kyle Seager's one-out single to right.
NOTES: The Mariners had the rare occurrence of having their 2012 first-round draft choice and their 2013 first-rounder on their home playing field before the game. C Mike Zunino, last year's third overall selection, was called up before the game. He is the first position player to reach the majors. The club's top pick this year, 12th overall, 3B D.J. Peterson, was invited in along with a half dozen other draftees. The club is beginning the negotiating process. ... Astros LF J.D. Martinez had a pair of singles in his three at-bats to give him at least one hit in 13 of his past 15 games. He's hitting .322 during that span. ... Jose Altuve's 11-game hit streak ended.