HOUSTON (AP) -- After the Kansas City Royals tied Wednesday night's game in the seventh inning, manager Ned Yost felt pretty good about his team's chances with a bullpen that has the American League's lowest ERA.
But Kelvin Herrera (1-2) plunked Jose Altuve on the forearm with a pitch and things went downhill from there.
Altuve had three hits and scored the tiebreaking run in the seventh inning to help the Houston Astros complete a three-game sweep of the Royals with a 6-5 victory.
After he was hit by the pitch, Altuve stole second and reached third on a lineout. He put Houston on top when he beat the tag at the plate on a fielder's choice by Chris Carter.
"We didn't think he could get there," Herrera said of Altuve. "I had bad luck today."
The play was reviewed and upheld.
"I thought it was close," Yost said. "It was tough to tell."
The Astros trailed early before taking a 5-3 lead after a four-run fifth inning. A two-run triple by Jarrod Dyson off Josh Fields tied it in the seventh before Altuve scored the go-ahead run.
Luke Gregerson (3-1) pitched a perfect ninth for the win.
Royals starter Edinson Volquez tied season highs with eight hits and five runs in five-plus innings. He struck out six and allowed a season-high two homers.
"It just got away from him right there," Yost said of the fifth inning. "He just started getting pitches up. He's trying to throw his curveball down and kind of left it up at times."
Carter and Marwin Gonzalez hit solo homers for Houston and Evan Gattis drove in two runs.
The Astros have the most wins in the AL (47), but the Royals have the league's best winning percentage (44-31).
Houston rookie starter Vince Velasquez yielded five hits and four runs with seven strikeouts in 6 1-3 innings but did not factor into the decision. He hasn't recorded a decision in any of the first five starts of his career to tie an MLB record set by three others, the last time Chris Brock in 1997.
Kendrys Morales hit a two-run homer in the first to give Kansas City an early lead and Alex Rios drove in a run in the second.
Velasquez retired 13 straight after the hit by Rios, with Kansas City's next hit coming on a single by Lorenzo Cain with one out in the sixth inning. But the rookie still faced the minimum in that inning thanks to a double play.
Volquez had retired 10 of 11 batters when Carter hit the 100th homer of his career with one out in the fourth to get the Astros within 3-1.
Gonzalez's homer, which landed several rows into the stands in right field, started the scoring in the fifth inning to make it 3-2.
Volquez then walked Jason Castro before hitting George Springer on the hand with a pitch. Altuve's RBI single tied it up before the single by Gattis drove home two to put Houston on top 5-3. Gattis was out at second on the play and Volquez struck out Luis Valbuena and Carter to end the inning.
"Sometimes you get really mad because you pitched really good ... in the first three innings," Volquez said. "You feel like you got everything working that night. Then, one inning they score four runs against you."
Cain hit a two-out triple in the first inning before the shot by Morales, which landed in the Crawford Boxes in left field and put the Royals up 2-0.
Royals: 1B Eric Hosmer missed a third straight game with a sprained left ring finger. Yost said that he was doing better Wednesday but that he'll probably be out for a couple more days.
Astros: Springer left the game in the sixth inning with a wrist injury and was getting X-rays after the game. ... OF Colby Rasmus was out for the fifth straight game because of a skin infection on his left arm caused by a bug bite. He had been hospitalized receiving intravenous antibiotics to try to eliminate the infection, but has been released and rejoined the team on Wednesday.
Royals: RHP Chris Young opposes Minnesota's Kyle Gibson when the Royals open a four-game series with the Twins on Thursday. Young got a win against Oakland in his last start by allowing four hits and two runs in six innings.
Astros: Houston has the day off on Thursday before opening a series at Boston on Friday. Dan Straily will be recalled from Triple-A to make his first start in the majors this season against Justin Masterson. Straily, who was traded from the Chicago Cubs this offseason, is 6-6 with a 4.06 ERA at Fresno this season.