Kendrys Morales, Nick Franklin and Dustin Ackley each drove in a run for the Mariners, who had lost six in a row before the series against the major league-worst Astros. They will have Hisashi Iwakuma on the mound when they go for a series sweep.
Saunders (11-13) yielded an unearned run and six hits over 5 1-3 innings in his first win since Aug. 4 at Baltimore. The left-hander was 0-3 with an 8.31 ERA in his previous four starts.
Matt Dominguez and Brandon Barnes had two hits apiece for Houston (44-91), which appears to be headed for its third straight 100-loss season.
Dallas Keuchel (5-8) got off to a rough start, and the Astros were never able to recover.
Seattle jumped on Keuchel for three runs in the first inning. Morales had a run-scoring infield hit before Keuchel issued consecutive walks to Raul Ibanez and Franklin to force home another run. Ackley then made it 3-0 with a grounder that brought home Morales.
Kyle Seager also had two hits for the Mariners (62-73), who closed out August with a 12-16 record.
Keuchel put together a nice outing after the rocky first, striking out eight in seven innings. He allowed four hits and walked two.
After Saunders departed, Carter Capps and Yoervis Medina each pitched 1 1-3 scoreless innings before Danny Farquhar finished for his 11th save.
Houston had a chance to get back in the game in the second. Dominguez led off with a single and Chris Carter then walked before Barnes grounded into a double play. The Astros went on to load the bases on two walks, but rookie Cody Clark bounced into a forceout to end the threat.
The Astros got on the board in the fourth when Barnes singled with one out and eventually came around to score on an error by Franklin at second.