SEATTLE -- Hisashi Iwakuma used all his pitches -- and his imagination -- during his latest splendid start.
"He has a great heartbeat," Mariners manager Eric Wedge said. "The game never speeds up on him."
Raul Ibanez hit his team-high 12th home run and Michael Morse had an RBI double for Seattle.
Iwakuma (7-1) gave up four hits, struck out eight and walked one while reducing his ERA to 1.79, second-lowest in the majors behind Boston right-hander Clay Buchholz (1.71).
The critical moment came in the seventh. With the Mariners up 2-1, Carlos Pena led off with a double and Chris Carter walked. Jimmy Paredes struck out and Pena reached third on a wild pitch before Iwakuma induced Matt Dominguez to ground into an inning-ending double play.
"I just try to slow the game down, pitching with composure, and imagine that I would get a double play in that situation," Iwakuma said through a translator. "That was a two-seam, which went well for us."
Iwakuma has been particularly stingy at home. He leads the AL with a 0.92 ERA in six starts at Safeco Field, striking out 46 and walking three. In 24 career appearances there, including 16 starts, he is 9-3 with a 1.89 ERA.
"I feel very comfortable here and very used to the mound here," Iwakuma said. "That helps me out to have that advantage."
Mariners shortstop Brendan Ryan said it's a pleasure playing behind Iwakuma.
"He has that four-seamer that like goes downhill then flattens out, with the split off that," he said. "He has his change, slider. He uses his big curveball a lot to get ahead. He's got a complete repertoire and uses it intelligently. This is what we've come to expect out of him now. It's pretty awesome."
Carter Capps and Charlie Furbush worked the eighth. Tom Wilhelmsen got three outs for his 16th save in 19 opportunities.
Pinch-hitter Carlos Corporan had a two-out RBI single in the ninth before Wilhelmsen retired Dominguez on a foul pop to end it.
The Astros made three errors to give them 47, tying the Los Angeles Angels for most in the AL.
"You just have to keep plugging away," Houston manager Bo Porter said. "It's like we talk about, the break points, and right now we're losing those critical break points and the other teams are capitalizing. Give Seattle credit tonight, they capitalized on our mistakes."
Marwin Gonzalez started the Astros' rally in the third with a one-out single. He is hitting .533 (8 for 15) against Mariners pitching this season.
Brandon Barnes attempted a sacrifice bunt. Iwakuma jumped on it quickly but his throw to second was dropped by Ryan for an error and Gonzalez raced to third.
Jose Altuve then hit a sacrifice fly to left.
That unearned run ended Iwakuma's scoreless streak at 23 2/3 innings, eighth-longest in franchise history. He has not allowed an earned run since the second inning on May 26 against Texas.
Ibanez tied the score with his solo shot in the fourth into the right-center seats off Dallas Keuchel (3-3). It was Ibanez's fourth home run off a left-hander this season. He did not have any during the 2012 regular season with the New York Yankees.
The Mariners worked to scratch out the go-ahead run in the fifth. Carlos Triunfel, who has had two brief call-ups this season, broke an 0-for-13 skid with a single to open the inning. Jason Bay followed with a hard grounder to the left of Dominguez, who dived to stop it at third base. His only play was to first as Triunfel slid safely into second.
Kyle Seager then bounced back to the pitcher, who turned to catch Triunfel in a rundown. Triunfel dodged the tag long enough to allow Seager to reach second. Kendrys Morales then hit a high bouncer to Dominguez, who rushed his throw to first and Carter could not dig it out.
Seager raced home on Dominguez's throwing error for a 2-1 lead.
"[Keuchel] fields his position well. He made a couple big plays to help himself," Wedge said. "Carlos thought it was over his head, so he took off and got caught in between. Now you have to do what he did. It ended up being a big play for us."
Morse's RBI double in the seventh sent Bay home from third for a 3-1 lead.
Altuve's ground-rule double in the sixth extended his hitting streak to a career-high 11 games. ... Seager's 13-game hitting streak ended. ... Wedge has to juggle his lineup daily because of a rash of injuries. Morales (back) felt well enough to play first base, allowing Morse (quadriceps) to be the DH. Wedge said Morse would be on the disabled list if Justin Smoak (oblique) was not already there. CF Franklin Gutierrez (hamstring) also is on the DL. Endy Chavez started in center despite leg issues. "They're in the trenches right now. They're grinding," Wedge said. "It's a long stretch, a tough stretch 'cause we've been throwing out the same lineup pretty much every day."