HOUSTON (AP) — Mariners manager Scott Servais loves how his team is hitting lately. He only wishes this offensive outburst had come earlier in the season.

Robinson Cano drove in three runs, three players homered and seven pitchers combined for a five-hitter in Seattle's 9-0 rout of the Houston Astros on Wednesday night.

"The frustrating thing going through the struggles we did in August and early September was you know it's in there," Servais said. "It wasn't consistently there and showing up, and the lineup just wasn't flowing. Just up and down the lineup, the quality of at-bats have been there this road trip."

The Mariners took two of three in this series from Houston, which saw its AL West lead over the Oakland Athletics shrink to four games when the A's beat the Angels 10-0.

Seattle has outscored its opponents 35-19 in the last seven games, winning five.

Rookie Matt Festa made his first career start on a bullpen day for the Mariners and threw a perfect first inning before Casey Lawrence (1-0) took over and allowed one hit in three innings. Adam Warren, Shawn Armstrong, Zach Duke, Justin Grimm and Roenis Elias pitched an inning each to close it out.

"Obviously, to throw nine zeroes up there, it's hard to do certainly against this team in this ballpark," Servais said. "But our guys were really sharp tonight."

The Mariners jumped on Dallas Keuchel (11-11) immediately with Mitch Haniger hitting a leadoff single before a double by Jean Segura. A single by Cano came next to make it 1-0, and Keuchel walked Ryon Healy with one out. A wild pitch allowed Segura to score and Cano and Healy to move up a base.

Kyle Seager then scorched a line drive that hit Keuchel on the side of the head and sailed into right field to score Cano and make it 3-0. Keuchel didn't show any outward signs of injury. He was checked on by manager A.J. Hinch and the team trainer for a couple of minutes before throwing some warmup pitches and remaining in the game.

He got on track after that, retiring the next 12 batters before walking Haniger with one out in the fifth inning. Cano hit an RBI double with two outs and he reached third on the throw. Nelson Cruz drove him in with a single.

Keuchel yielded six hits and five runs in five innings for his first loss since Aug. 18.

"They came out and ambushed Dallas," manager A.J. Hinch said. "Within the first five pitches, we were in a mess and never really recovered from it. They continued to tack on, and we didn't have an answer. ... You just have to chalk it up to a bad night."

Brad Peacock took over to start the sixth inning and was greeted by Seager's homer, which landed in the seats in right field.

Dean Deetz came in for the seventh, and he also allowed a home run to the first batter he faced when Haniger sent one to the Crawford Boxes in left field.

Guillermo Heredia hit a solo shot off Cionel Perez in the eighth.

TRAINER'S ROOM

Mariners: LHP James Paxton, who is recovering from the flu and pneumonia, will throw his second bullpen session on Friday and hopes to return to the rotation after that. He said he was "pretty gassed" after throwing 40 pitches in his first bullpen session on Tuesday, but believes he'll feel better by Friday. "If I get to the point where I have something left in the tank after the bullpen, then I'll get back in a game," he said. ... RHP Felix Hernandez (hamstring) will rejoin the team at Texas and is scheduled to throw a bullpen session on Friday.

SCARY MOMENT

Seager was shaken up after hitting Keuchel in the head in the first inning. His feeling was certainly understandable considering his history. In 2016 Seager hit a line drive that struck Angels pitcher Matt Shoemaker and forced him to undergo emergency brain surgery. Shoemaker has recovered, but Wednesday's incident with Keuchel brought back those memories.

"It was scary," he said. "Nobody likes that's stuff. It makes you sick to your stomach. Thankfully he's all right."

Keuchel said he was fine after the game and added that he feels lucky to have escaped injury.

"I like to think that I'm tough, but even myself, I was very fortunate to not have anything seriously wrong afterward," he said. "I don't think I got any glove on it."

UP NEXT

Mariners: Seattle is off Thursday before Erasmo Ramirez (2-3, 5.65 ERA) starts in the opener of a three-game series at Texas. Ramirez allowed four hits and four runs in four innings in his last start but did not factor in the decision in a 6-5 win over the Angels.

Astros: Houston is also off Thursday before beginning a series with the Angels with Gerrit Cole (14-5, 2.88) on the mound. Cole's start was pushed back from Tuesday to give the right-hander, who has thrown 187 1/3 innings this season, some extra rest.