Houston has now been swept in three of its last six series and hasn't won a set in a month, going 0-7-1 in eight series dating back to June 21.
After having to scrape across runs against a dealing Erik Bedard on Saturday night, the Mariners' scorching bats returned against Houston righty Jordan Lyles.
Lyles continued his downward trend over the last month, surrendering 10 runs -- nine earned -- on eight hits and two walks.
"From the get-go, I was missing around the zone," Lyles said. "Wasn't quite hitting the target, just a little bit off. It really just came down to fastball command."
It was a sharp contrast to the last time the 22-year-old faced Seattle, when he hurled seven scoreless innings with a career-high 10 strikeouts on June 12 in Safeco Field.
The Mariners erased those memories early and often, batting around in a seven-run second inning.
With Kendrys Morales on first and none out, Kyle Seager hit a likely double-play ball right near second base that Astros shortstop Jake Elmore booted, leaving both Mariners safe and transforming the inning.
"I may look at the game through a different lens," said Houston manager Bo Porter. "You see a seven-run inning, but you had a double play that's not made. Instead of being two outs, no one on, it's first and second, nobody out. The inning continues to snowball and you look up and that's the difference in the game."
Two RBI singles and a hit-by-pitch with the bases loaded followed, giving Seattle a 3-0 edge. Then Franklin landed the decisive blow, smacking a 1-1 pitch from Lyles just inside the right-field foul pole for his first career grand slam.
"I was just looking for a pitch to drive and try to get a run in and get a sac fly," Franklin said. "[Lyles] just happened to leave it over the plate and I connected on it."
That was more than enough for Hernandez, who didn't have his best stuff, but still held Houston to four hits and no runs over six innings. He struck out seven, throwing 65 of his 99 pitches for strikes.
"I don't think I've ever been in a ballpark where he's pitched and wasn't impressed," Porter said of Hernandez. "He's one of the best in the game and showed it again today."
But Seattle's offense didn't let up, driving Lyles from the game with three more runs in the fifth.
The Astros' best chance to get on the board against Hernandez came in the bottom of the inning, as they put runners on first and third with one out. But Hernandez coerced a tag-and-throw double-play ball out of Jose Altuve to stop the threat cold.
Facing reliever Lucas Harrell in the seventh, the Mariners tacked on another run with Brad Miller's RBI single. Miller crushed Astros pitchers during the series, going 5-for-12 while scoring four runs and driving in seven over three games.
Houston finally got on the board when Altuve laced an RBI single into left that scored Jake Elmore from second base in the seventh.
In the eighth, the Mariners chased Harrell -- formerly a starter before his demotion to the bullpen two weeks ago -- with Michael Saunders' RBI double. Harrell allowed two runs on five hits in 3 2/3 innings and needed 84 pitches to do so.
"It was definitely a great bounce-back from yesterday and only having the one hit," Franklin said. "But at the same time, we've been swinging it well and it was just one of those adjustment periods we had to go through and get back after it the next day."
The Astros didn't get much going on offense until the ninth, when they strung together three hits, a walk and a sacrifice fly to plate a pair of runs.
With two outs and runners on second and third, Jason Castro struck out, but the ball got away from catcher Henry Blanco. The throw down to first deflected off Castro and allowed two more runners to score, making it a four-run frame.
The loss made it 13 consecutive Astros home losses to American League West competition. Houston has dropped eight of its last nine games.
Chris Abshire is an associate reporter for MLB.com.