The Royals, who overcame four errors, will go for the three-game sweep Thursday night.
Moustakas smacked a 2-1 pitch from Jerome Williams (0-1) over the wall in right field. Jarrod Dyson then singled, stole second, went to third on a sacrifice bunt and scored on Omar Infante’s ground ball to shortstop. The throw home from Marwin Gonzalez was a tad late and Jason Castro barely missed the sweep tag.
“It felt great,” said Moustakas. “It’s a big win for us. Any time you can get a win on the road it’s a big win. We played a great game today.”
Danny Valencia homered and Salvador Perez had a two-run single for the Royals, who banged out 13 hits.
Castro and Marc Krauss went deep for the Astros, who have lost three in a row and seven of their last nine games.
Houston had men on first and second in the bottom of the 11th when Greg Holland served up a line drive to left from Jose Altuve. Alex Gordon made a diving catch to end the game and secure Holland’s fifth save.
Danny Duffy (1-0) allowed three hits and fanned four over two relief innings to get the win.
Valencia homered to left field in the second inning, but the Astros went ahead 2-1 in the third. Highly-touted prospect George Springer, who was selected to the major league roster from Triple-A Oklahoma City Wednesday, reached base on a slow infield chopper. Castro followed with his third homer of the year, a blast to left.
“It’s always good to get that first one out of the way,” Springer said.
Lorenzo Cain’s groundout plated Gordon in the fourth to tie the contest, but the Astros went ahead 4-2 in the sixth. Jesus Guzman walked ahead of Krauss’ homer to left.
The Royals loaded the bases in the seventh, an inning in which the Astros used three relievers. Brad Peacock allowed a pair of singles before Kevin Chapman walked Eric Hosmer to fill the bases with two outs. Perez then grounded a single into left field to tie the game.
Houston successfully challenged a call in the ninth inning that resulted in an out. Cain led off with a grounder to shortstop and appeared to beat out the throw to first, and was called safe. It was overturned on replay.
Williams worked out of a jam in the top of the 10th. With men on first and second, Norichika Aoki struck out looking to end the inning.
Royals starter Jeremy Guthrie gave up six hits and four runs over six innings, while Houston’s Dallas Keuchel surrendered six hits and a pair of runs in six frames.
L.J. Hoes struck out looking to cap the bottom of the 10th, when the Astros left men at the corners.