The loss was the third in the past five games for Cleveland, which is trying to remain relevant in both the American League Central and Wild Card races.
"We have about six weeks left," Indians manager Terry Francona said. "If we want to continue to be in this thing, we're going to have to play a lot cleaner. I think sometimes it comes down to just being prepared. The guys work hard -- that's not an issue.
"But, as you start getting tired, it's just being ready for whatever play could happen so you don't have to just react. We're the type of team, we can't play like that and expect to win."
The Tribe's meltdown against Houston began in the bottom of the eighth inning, when Cleveland had runners on first and second base in a 1-1 game with catcher Roberto Perez at the plate. Facing Astros lefty Tony Sipp, Perez squared around to bunt, but pulled the bat back at the last moment. Mike Aviles was caught too far off second base and was tagged out on a rundown.
Aviles was not in the clubhouse after the defeat.
"He got too aggressive, knowing that they were being aggressive," Francona said. "And then he got in no-man's land."
Rookie Tyler Holt, who advanced from first to second on the play, then attempted a steal of third base with Perez still batting. Astros catcher Jason Castro fired a strike to third baseman Matt Dominguez, who applied the tag on Holt for the inning's second out.
Holt, who had 31 stolen bases in 98 Minor League games this season, desperately wanted to ignite a rally for Cleveland after the first mistake on the basepaths.
"I tried to make something happen," Holt said. "I tried to steal third -- completely my decision. I felt like I had a good jump. I thought I saw maybe fastball away. It just happened to be a bad pitch to steal on. At least I wasn't thrown out by a mile. It was bang-bang, but that's the way I play."
Francona hoped it would serve as a learning moment for the young player.
"You've got to be pretty sure you're going to make it," Francona said. "With youth comes some youthful mistakes. What I don't want him to do is play scared. Those are things that we certainly talk to guys about."
Sipp then followed with a strikeout of Perez, and the Cleveland crowd unleased a chorus of boos in response.
In the top of the ninth inning, Cleveland's season-long defensive woes came back to bite the club again. The Indians have now made a Major League-leading 99 errors this season after having 98 miscues in all of the 2013 campaign.
With one out and a runner on first base, closer Cody Allen induced a grounder from Dexter Fowler. First baseman Carlos Santana gloved the ball, but threw wildly over second base, putting runners on the corners. Fowler then attempted a steal of second, and Perez fired an errant throw to second, scoring a run to give Houston a 2-1 lead.
Later in the ninth, Jon Singleton crushed a three-run home run off Allen, leading to four unearned runs for the closer and effectively putting the game out of reach.
"We need to play clean," Francona said, "because we pitched really good tonight."
Making his third start since leaving the Tribe's bullpen, Carrasco was strong once again, hitting 98-99 mph in the first inning and overpowering the Astros for most of the night. The right-hander turned in six innings and extended his scoreless innings streak as a starter to 16 before slipping briefly in the fifth inning against Houston.
Astros shortstop Marwin Gonzalez led off the fifth by drilling an 0-1 offering from Carrasco to right field, collecting his sixth home run of the season and putting the Indians in a 1-0 hole. Carrasco quickly recovered from the momentary lapse and set down the next three batters he faced in order.
Carrasco has pieced together 18 innings since transitioning back to a starting role, which he held on Opening Day before his early-season issues led to a trip to the bullpen. In his past three outings, the righty has turned in a 0.50 ERA with seven hits scattered, two walks and 17 strikeouts. Eight of those whiffs came Friday against Houston.
"I felt really good," Carrasco said. "The only thing I had on my mind was giving [us] the opportunity to win the game."
Carrasco managed to escape with a no-decision thanks to hot-hitting rookie Zach Walters, who belted a solo home run off Astros starter Brad Peacock with two outs in the fifth inning. The blast was Walters' team-leading fifth home run since Aug. 10, when he was promoted from Triple-A Columbus. It also marked his third consecutive game with a homer.
The late collapse swept away those silver linings.
"We obviously need to be better," Francona said. "That's not the way we certainly want to play the game. Losing is one thing, but losing like that."
"We'll do better," he added.