HOUSTON — Sandy Alcantara carried a dominant outing into the eighth inning before Yordan Alvarez crushed a two-run homer and Isaac Paredes followed with a solo shot, sinking the Miami Marlins to their ninth consecutive loss.

Alcantara, the All-Star right-hander, had surrendered just two runs over seven innings and was on track for his 111th career quality start — which would have made him the Marlins’ franchise leader. Instead, the eighth-inning collapse left him with nine hits and three home runs allowed, tying a career high.

“It’s not good the way we’ve been playing the last 10 games, but it’s part of the game,” Alcantara said. “We have to keep things together. We know we will have another opportunity to be good next time, but today wasn’t good for us.”

Manager Clayton McCullough defended his starter’s performance despite the final line. “He was fantastic,” McCullough said. “I thought he was in control most of the night. He had a very efficient pitch count. He really moved things along well after the first couple of innings. I hate how things went down there, but I thought he threw the ball fantastic.”

Alcantara threw 108 pitches, relying on his four-seam fastball, changeup and sinker 77% of the time — 30 four-seamers, 29 sinkers and 24 changeups. He generated four whiffs on 15 swings off the four-seamer and five whiffs on 14 changeups, finishing with 12 total swings and misses but just three strikeouts.

“He’s getting a ton of ground balls now,” McCullough said. “He’s got the ability to use all of his stuff, use both sides of the plate. He’s got count leverage it feels like almost every at-bat. He’s just on the attack and using his entire arsenal. His stuff has been great.”

Trailing 2-0 in the fourth, the Marlins plated two runs with a two-out rally. Griffin Conine walked, Javier Sanoja delivered an RBI double and Joe Mack hit an RBI single to tie the game at 2. “I thought we had some really good at-bats,” McCullough said. “The at-bat quality as a whole was good tonight. I thought we squared some balls up.”

McCullough also addressed a lineup shakeup, giving Esteury Ruiz the start over Jakob Marsee. “He’s been a really fantastic spark for us,” McCullough said of Ruiz. He added that Marsee would still see playing time but acknowledged the outfielder’s struggles. “I talked with Jakob, and … it’s no secret Jakob is struggling this year from a performance standpoint,” McCullough said. “Ruiz in a limited sample of opportunity this year has done some really nice things for us.”

Alcantara said the losing streak has weighed on the clubhouse. “We’ve been playing way different than the first half,” Alcantara said. “I think we have to put things together and find a way to put ourselves in that situation that we were in during the first half.”

When asked about the decisive eighth-inning homers, Alcantara was blunt: “They just got me.”

The Marlins have an off-day Thursday before opening a three-game homestand against the Padres in Miami.