Mark Reynolds' seventh homer of the season put Cleveland on top in the seventh inning and the Indians held on for a 5-4 win over the Astros.
"Obviously, you want to capitalize and win games like this," Astros manager Bo Porter said. "Unfortunately, we came up short. We definitely had our opportunities, had chances and didn't capitalize."
The Astros dropped to 5-13 with the loss, which is the worst record in the American League, and their worst start through the first 18 games since posting the same record in 1983.
The home run by Reynolds, who also homered in Cleveland's 19-6 win Saturday, was one of four solo homers for the Indians, who took two of three in the series.
Carlos Santana, Drew Stubbs and Yan Gomes also added home runs for the Indians.
The game was tied at 4 in the seventh inning before the two-out full-count homer to left-center by Reynolds off Hector Ambriz (0-1). Fernando Martinez hit a two-run homer in the first inning for Houston in his 2013 debut.
Cody Allen (1-0) got the final out of the sixth and Chris Perez pitched a scoreless ninth for his second save in three opportunities.
The Astros had a great opportunity in the ninth when Rick Ankiel led off with a first-pitch double to center field before Perez plunked Matt Dominguez on the elbow. He was replaced by pinch runner Brandon Barnes.
A sacrifice bunt by Marwin Gonzalez advanced the runners before Cleveland intentionally walked Jose Altuve to load the bases. But Perez worked out of the jam by striking out Chris Carter before Jason Castro grounded out to end the game.
"In that situation there, you at least think you are going to tie the game, so it was unfortunate that we didn't put together at bats that warranted us tying the game, and we didn't get it done," Porter said.
Carter, who is in a 0 for 15 slump, was disappointed he couldn't even make contact in the ninth.
"At least in that situation, you have to hit the ball," he said. "Get a sac fly and get the runner in to tie the game. I struck out there on a tough pitch."
The Astros hit back-to-back singles off Joe Smith with no outs in the seventh, but he retired the next three batters to end the threat.
The Astros were 0 for 7 with runners in scoring position Sunday and left eight men on base.
"We need to keep having those good situational at-bats," Castro said. "That is going to be what's key for us moving forward is for us to capitalize. Obviously, it's nice to get hits with nobody is on because that's how it starts. When guys are in position, get guys over and get them in any way you can."
Altuve drew a leadoff walk before Martinez, who came off the disabled list on Saturday, connected on his first pitch of the season for a solo homer that made it 2-0 in the first inning. The shot broke a streak of 14 2-3 scoreless innings against the Astros for Indians starter Ubaldo Jimenez.
Castro singled before Stubbs made a nifty over-the-shoulder catch while sprinting near the wall right-center and the Indians made it a double play when Castro couldn't beat the throw back to first.
Gomes got Cleveland within 2-1 in the second with his solo homer off Houston starter Erik Bedard which bounced high on the wall above the Crawford Boxes in left field. Gomes added a triple in the fourth.
Santana doubled with one out in the third before a two-out walk by Reynolds. Ryan Raburn tied it at 2-2 when his RBI single rolled just out of reach of a diving Altuve and into the outfield.
Brett Oberholtzer made his major league debut when he replaced Bedard for the fifth inning. Santana led off that inning with a homer to left field to put Cleveland up 3-2.
Stubbs added his first home run of the season off Oberholtzer with one out in the sixth inning to push the lead to 4-2. It sailed just out of reach of a leaping Ankiel and hit a tub of popcorn of a fan in the front row in right field, sending popcorn raining down on Ankiel.
Jimenez retired the next 13 batters after the double play in the first inning. Houston didn't get another baserunner until Marwin Gonzalez singled to start Houston's sixth. Altuve followed with a triple which bounced off the right fielder Raburn's glove just short of the wall in right field to cut the lead to 4-3 and chase Jimenez.
He was replaced by Nick Hagadone before pinch hitter Carter tied it with a sacrifice fly to right field.
Hagadone issued consecutive one-out walks and was replaced by Allen who retired Justin Maxwell to limit the damage.
Jimenez yielded four hits and four runs in five-plus innings. He has allowed 18 runs in his last three starts.
Bedard allowed six hits and two runs with a season-high eight strikeouts in four innings. It was his first start since allowed six runs in 1-3 inning of an 11-2 loss at Oakland.
NOTES: Houston's pitching staff had a season-high 10 strikeouts on Sunday. ... Cleveland's Justin Masterson faces Chicago's Dylan Axelrod when the Indians and White Sox open a three-game series Monday. ... Houston's Brad Peacock takes on Seattle's Felix Hernandez in the opener of a three-game series on Monday. ... The Indians placed starter Brett Myers on the 15-day disabled list with inflammation in his right elbow Sunday. They selected the contract of RHP Fernando Nieve from Triple-A Columbus to take his roster spot. ... Houston recalled Oberholtzer from Triple-A Oklahoma and optioned LHP Dallas Keuchel there before the game. ... Cleveland shortstop Asdrubal Cabrera was out of the lineup on Sunday after bruising his left wrist in a fall down the steps on the way to the dugout on Saturday. Manager Terry Francona said he is OK and that he could play Monday. His teammates mocked his spill on Sunday morning by making a tape outline of a body with Cabrera's No. 13 on it on the stairs where he fell. Cabrera took it in stride, laughing and taking pictures of their handiwork.