CLEVELAND -- When it comes to walkoff victories, nobody does it better in the American League than the Cleveland Indians.

Jose Ramirez's RBI single with one out in the bottom of the ninth inning drove in the winning run as the Indians beat the Houston Astros 3-2 on Saturday night at Progressive Field.

It was the Indians' 10th walkoff win of the season, the most in the AL.

"This one wasn't easy, but we got some bunts down and forced the issue," Indians manager Terry Francona said.

Pinch-hitter Tyler Holt led off the bottom of the ninth against right-hander Jake Buchanan (1-3) with a single.

"Tyler was ready to hit, and he jumped on the first pitch," Francona said.

Holt went to second on a sacrifice bunt by catcher Roberto Perez. Center fielder Michael Bourn drew a walk.

Buchanan threw a wild pitch moving the runners to second and third. Ramirez then drove a 3-2 pitch to left field for a single, driving in Holt with the winning run. It was redemption of sorts for Holt, who with the score tied in Friday's game was thrown out trying to steal third base, short-circuiting an eighth-inning rally in a 5-1 Cleveland loss.

"Part of the reason Tyler is here is the way he plays. We don't want him to get gun shy," Francona said.

The win went to right-hander Cody Allen (5-3).

Four Cleveland pitchers combined on a three-hitter, the second consecutive game the Indians have held the Astros to three hits.

"We've had a couple of games here where we haven't swung the bats well," Houston manager Bo Porter said. "We have faith in our guys, though. They'll start swinging the bats and things are going to turn around."

After the Indians scored a run in the fourth inning to tie it at 2, the Astros pitchers dominated the game through the middle innings. Right-hander Collin McHugh and left-hander Kevin Chapman combined to retire 13 batters in a row into the eighth inning.

Cleveland pitchers were just as stingy as the Houston pitchers after the game settled into the 2-2 tie in the fourth inning.

Starting with the last out of the third inning, Indians pitchers combined to pitch 6 1/3 hitless and scoreless innings. The four Indians pitchers combined to retire 19 of the last 21 batters in the game. The only two runners to reach base came on walks.

Houston took a 2-0 lead in the top of the third inning, a rally aided by the Indians' major league-leading 100th error of the season. With one out, right fielder Jake Marisnick singled against right-hander Danny Salazar.

Third baseman Gregorio Petit struck out for the second out, but left fielder Robbie Grossman drew a walk. Second baseman Jose Altuve singled to right field, scoring Marisnick, and a wild throw to the plate by right fielder Chris Dickerson allowed Grossman to score all the way from first to make it 2-0.

Salazar pitched six innings, allowing two runs (one earned) and three hits, with seven strikeouts and two walks.

"Danny was good. He fell behind in some counts early in the game, but then reeled it in and was very aggressive after that. His stuff is really good," Francona said.

Salazar has allowed three or fewer earned runs in nine of his last 10 starts. He is 4-3 with a 3.42 ERA during that span with 57 strikeouts in 55 innings.

"The first couple of innings tonight I lost my release point, but after that I got back into tempo," Salazar said. "I was able to throw more first pitch strikes, which was a big key."

Cleveland got a run back in the bottom of the third. With one out, Ramirez doubled off McHugh, and Ramirez scored on a single by left fielder Michael Brantley.

The Indians tied it in the fourth inning, which began with singles by third baseman Lonnie Chisenhall and Dickerson. A sacrifice bunt by Perez moved the runners to second and third. Chisenhall then scored on a groundout by center fielder Michael Bourn, tying it at 2.

McHugh pitched 5 1/3 innings and gave up eight hits.

"Ideally, you'd like to have a better mix of pitches and I didn't really have my curveball. You battle with what you got and that's what I had to do," McHugh said.

NOTES: Before the game, the Indians placed C Yan Gomes on the seven-day concussion disabled list and acquired C Chris Gimenez from Texas for future considerations. Gimenez will join the Indians on Sunday. ... RHP Trevor Bauer, who will start Sunday for Cleveland, has allowed three or fewer earned runs in 10 of his last 14 starts. ... Astros 2B Jose Altuve began the game with an American League-leading 175 hits, putting him on a pace for 220, which would be 10 more than the club record of 210 set by Craig Biggio in 1998.