Saunders was 1-5 with a 7.71 ERA in his seven starts since last beating the Astros on July 19, but the veteran lefty held Houston to an unearned run on six hits in 5 1/3 innings before manager Eric Wedge went to his bullpen.
Though Saunders had thrown only 86 pitches at that point, the move worked as Carter Capps replaced Saunders with two on and one out in the sixth and preserved the lead with two quick outs.
"I wasn't happy about coming out of the game," Saunders said. "But I'm never happy about coming out. I thought I had a lot left in the tank, but he's the manager for a reason. He makes those decisions.
"In my opinion, I think I could have gotten out of that jam and pitched even deeper into the game. But it was just one of those things where he felt one guy matchup-wise was better than the other. What are you going to do? We still won. That's all that matters."
Wedge felt Saunders was "a little erratic" throughout the contest and trusted his instincts in opting for Capps to face second baseman Jake Elmore, who'd walked and singled in his first two at-bats. Capps got Elmore to foul out to the catcher, then struck out Marwin Gonzalez.
"I just felt it was better to go with the matchup with the right-on-right in that situation," Wedge said. "Joe battled and gave us everything he had. He wasn't on top of his game today, but he controlled damage. I felt it was a better move to go to the bullpen right there."
Capps, Yoervis Medina and Danny Farquhar then combined to hold the Astros at bay the rest of the way. Seattle's bullpen has thrown 11 consecutive scoreless innings in the series.
With the win, Saunders improved to 11-13 on the season with a 4.92 ERA, while Farquhar racked up his 11th save in 12 chances since taking over as closer.
Seattle jumped on Astros starter Dallas Keuchel for three runs in the first, but the 25-year-old southpaw then shut out the Mariners on one hit for his next six innings.
"You'd like to keep going," said Wedge. "We had opportunities. We played sloppy baseball in the second half of the game. We had opportunities offensively and misplayed some balls defensively. But in the end, we won the ballgame."
Keuchel wound up allowing just four hits and three runs in his seven-inning outing, with two walks and eight strikeouts, but still took the loss in falling to 5-8 with a 4.77 ERA.
The Mariners' first inning thus loomed large as Kendrys Morales drove in the initial run with an infield single, Nick Franklin drew a bases-loaded walk to make it 2-0 and Dustin Ackley pushed across another with a groundout to first as the Mariners spotted Saunders a quick three-run lead.
Keuchel wasn't thrilled with the way things played out in a three-run frame in which he never gave up a well-hit ball.
"Very interesting," he said. "I couldn't dwell on it. I thought there were a couple of plays that were close. That's pretty much just sums up our season. I couldn't dwell on it, though, or I would have been in a world of hurt. I got out of it and gave us a chance to win."
Saunders had his own misfortune in the fourth when Houston scored its only run on a botched caught stealing attempt with runners on first and third and one out.
Catcher Humberto Quintero appeared to have easily thrown out Elmore trying to steal second, but Franklin took his eye off the ball as it arrived. The ball popped out of the rookie second baseman's glove, rolling far enough away that Brandon Barnes scooted home from third for the Astros' lone run off Saunders.
"I still think there's a full moon when I pitch because there's some crazy stuff going on in my games, so it was nice to get a 'W' for sure," Saunders said.
Rookie shortstop Brad Miller helped Saunders get out of the fourth with a sterling play on a ball deep in the hole by catcher Cody Clark. Miller made another nice play in the eighth to help out Medina, one batter after he'd thrown a potential double-play ball wide of first baseman Justin Smoak.
In the end, Seattle did just enough to pick up its third straight against an Astros team that now stands at 44-91.
"It's nice to get on a winning streak after you lose six in a row," Saunders said. "It's a good turnaround for us. It shows character about what this team is about. It shows a lot. I think we've done that all year, to forget easily and turn the page quick. We had a rough stretch at home. Now we have to have a good stretch on the road. That's how it works."