Keuchel (6-2) struck out six, walked none and allowed just an unearned run that scored on a throwing error in the second inning. He went 8 2-3 innings in a victory over the Angels in his last start, the only thing keeping him from three straight complete games.
George Springer and Marc Krauss hit two-run homers off Hisashi Iwakuma (3-1), who allowed a season-high nine hits.
Springer hit his seventh home run of the month in the sixth inning.
Seattle took the early lead with a two-out rally in the second inning. Mike Zunino and Michael Saunders each singled to put runners on first and second. Cole Gillespie followed with a dribbler off the end of the bat up the third-base line. Keuchel fielded the ball and threw wide of first base down the right-field line as Zunino scored.
Keuchel retired the next 14 batters he faced and faced the minimum 22 batters after Gillespie's single in the second.
Meanwhile, the Astros finally broke through in the sixth inning. Jose Altuve singled and Springer followed with a two-run blast to left field for his fourth home run in his last three games.
Krauss added his homer in the seventh to extend the lead to 4-1, matching the most runs Iwakuma allowed this season, and marked the first runs he's allowed at home this year.
The Mariners return to action with a Memorial Day matinee when they face the Angels at 1:10pm at Safeco Field.
Notes: Houston C Carlos Corporan was the only Astros batter that failed to get a hit. ... Mariners OF James Jones had his streak of hits in his first 15 starts and last 14 straight games ended with a 0-for-4 performance. ... Seattle 2B Robinson Cano's streak of reaching base in a career-high 31 straight games also ended with a 0-for-4 day. ... Mariners manager Lloyd McClendon didn't rule out the possibility of LHP James Paxton rejoining the starting rotation following a rehab start for Triple-A Tacoma on Saturday night. Paxton allowed three runs (two earned) on four hits with two walks and five strikeouts in a 62-pitch outing. Paxton has been on the disabled list since April 9 with a strained left latissimus dorsi muscle.