"We say every day, we need to be one run better. We're sort of taking that to an extreme, unfortunately," said manager Terry Francona. "But we won, and when you win a game like that, it doesn't matter how hard it was when it's over.
"Everybody in [the clubhouse] feels good. And instead of being tired and dragging, we're going to be tired and happy and ready to play tomorrow [at Minnesota]. It makes tomorrow's game a lot more fun."
After Mike Aviles' bases-loaded sacrifice fly off Samuel Deduno scored Jose Ramirez from third base for the go-ahead run, Cody Allen pitched a scoreless 13th inning for his 22nd save. Allen struck out Dexter Fowler swinging to end the game with a runner at first base, preserving the win for Kyle Crockett (4-0).
The Indians got only four hits off Feldman through eight-plus innings.
"He had the cutter working on all the pitches," said Michael Bourn. "He's a good pitcher; he makes the ball move both ways."
Feldman was pulled in the ninth after giving up a leadoff double to Bourn on a controversial play. Bourn hit a fly ball that one-hopped the wall in left-center and caromed behind a column and disappeared briefly before re-appearing at the feet of center fielder Fowler, who had his hands in the air to signal that the ball wasn't playable. Bourn raced home with hopes of having a game-tying inside-the-park homer, but a crew review quickly overturned the call and kept Bourn at second base.
Following Bourn's double, Ramirez was ruled safe at first base following a challenge from Francona, moving Bourn over to third base with no outs. Bourn was thrown out attempting to score on a 3-5-2 fielder's choice on a ball hit by Michael Brantley, but Ramirez later scored from second base on Carlos Santana's game-tying single off Chad Qualls.
After dropping the first four games of their road trip, the Indians won the final three games of the four-game series with the Astros.
"We're not in the position to be giving games away," said Bourn. "We're manufacturing runs right now."
Salazar did his part, though, striking out nine over 7 1/3 innings of one-run, five-hit ball. Jose Altuve, the AL's leading hitter, went 0-for-3 against Salazar and 0-for-6 for the first time in his career.
"We still have hope," said Salazar, who has given up three runs or fewer in 12 of his last 13 starts. "Right now we just need to win every day."
Entering the game, Salazar was averaging 9.46 strikeouts per nine innings over his first 18 big league starts. On Thursday he struck out Jon Singleton three times. Singleton was 0-for-4, with four of Houston's 14 strikeouts.
Salazar's performance was outstanding, but it couldn't match that of Corey Kluber and Carlos Carrasco, who had career-high 14- and 12-strikeout performances on Tuesday and Wednesday, respectively, in wins over Houston.
"I thought [Salazar] was good," said Francona. "I thought he [had] a lot of conviction in his fastball. Had a real good changeup."
Over the 13 innings, both teams managed only eight hits each. Ramirez had three hits and scored both runs for Cleveland.
"It stings for our pitchers to go out and throw that good and not be able to get them some run support and get out of there with a win," said Astros right fielder Jake Marisnick, who had two hits. Robbie Grossman led the Astros with three hits.
The right-handed Salazar had five strikeouts through three innings. He struck out the side in the second inning, getting Jason Castro, Singleton and Matt Dominguez.
The Astros got to him in the fourth. Marisnick singled in Fowler from second base with two outs when shortstop Ramirez couldn't glove Marisnick's single up the middle. Fowler had reached second base on a wild pitch.
Cleveland missed a chance to score in the third inning, leaving two runners on base after David Murphy led off with a double.