"I felt in control out there," Happ said.
The Indians scored first behind a leadoff double from cleanup hitter Jose Lopez in the second. After moving to third on a Shelley Duncan groundout, Lopez came home on a Happ wild pitch.
But Happ settled down, pitching a 1-2-3 fourth, escaping a two-runner jam in the fifth and getting 1-2-3 innings in the sixth and seventh. The Astros got on the scoreboard in the fourth and scored runs in the sixth and seventh to give Happ room to breath.
Manager Brad Mills said Happ was able to work quicker innings later in the game because he was getting more contact.
"He was around the plate a lot more to make these guys get more aggressive, which kept his pitch count down a little, but those last five innings, which was huge," Mills said.
The Astros' offense didn't get going until their second at-bats against Indians starter Derek Lowe. For the second straight day, Houston didn't have a baserunner through three innings, grounding out seven times in nine early at-bats against the sinkerballer.
"His sinkerball was not up in the zone," Chris Johnson said. "That's our plan against him -- to get him up in the zone. He wasn't giving anybody anything up in the zone."
The fourth didn't start well, either. Jose Altuve hobbled off the field after grounding out. The official diagnosis was a mild strained right hamstring. He is day to day.
Carlos Lee got the Astros' first hit with two outs, a single to left field. Lowe was surprised Lee was able to get a hit on the pitch.
"It was an unbelievable pitch," Lowe said. "We tried to throw it off the plate as much we possibly could and he hit it up the middle."
Brian Bogusevic followed with a single, and Lee came home on Johnson's single to tie the game. Jason Castro grounded out with two runners on to end the inning.
Houston snagged the lead in the sixth. Jed Lowrie doubled with one out after a 10-pitch at-bat and Lee followed with a single to score Lowrie. The Astros added another run in the seventh. Johnson and Castro singled, and Johnson scored after J.D. Martinez grounded into a 4-6-3 double play.
Lowe exited after 6 2/3, finishing with 110 pitches, 70 for strikes.
"Next time through, we kind of got him up in the zone," Johnson said.
The Astros added four in the eighth behind two two-run homers by Johnson and Martinez. Johnson has four multihit games in the last five and is batting .435 on the homestand. He said he's been working on keeping his swing short.
"It's coming around," Johnson said. "I don't want to jinx myself and say that I'm doing really well."
Mills had met with Martinez before Saturday's game to talk about timing adjustments to his swing. Martinez responded with homers in the last two games.
"As long as he continues to be able to make those adjustments from pitch to pitch, that's the biggest thing," Mills said. "We're hoping he's able to keep up with that, and there's no reason to think he won't."
After Happ exited in the seventh, Wesley Wright, Brandon Lyon and Xavier Cedeno combined to pitch a scoreless eighth. Brett Myers, warming up when the Astros had a 3-1 lead in the eighth, came on for the ninth.
Houston's starting pitchers have a 1.88 ERA in the last seven games, six of them at home.
"To see the guys continue to throw the ball like they are is definitely outstanding," Mills said.
"You can't say enough about the pitching staff," Johnson said. "Those guys are doing amazing right now and the offense kind of went through that rough patch of not being able to get that big hit. And they've done nothing but back us up and make sure they give us enough time to get out of it, and they did that."
Happ (6-7) said the ball came out of his hand clean, helping him focus on making pitches rather than his mechanics. In his last two starts, he's gone 13 innings and given up three runs.
"I think I may have turned the corner a little bit, especially today, the way I felt out there," Happ said. "Looking forward to keeping that up, definitely."