HOUSTON -- Houston's young hitters were disciplined Monday night against a veteran pitcher struggling with command, and it propelled the Astros to a win over the top team in the American League.
Chris Carter and Jose Altuve homered to back a solid start by rookie Lance McCullers in a 6-1 victory over the Kansas City Royals.
In a matchup of teams with the best records in the AL, Houston snapped Kansas City's four-game winning streak. The Royals are 44-29 and the Astros are 45-34.
McCullers (4-2) allowed four hits and a run with six strikeouts in seven innings in his ninth major league start.
The Astros jumped on Joe Blanton (2-1) for five runs in the first three innings and Carter added a solo home run in the fifth to help them to the win.
"We didn't swing out of the zone too much, specifically early," manager A.J. Hinch said. "You always ask your guys to take whatever they give you and he was nibbling on the plate or just off the plate and we just continued to take our base, take our base ... we really were opportunistic with whatever we were being given."
Blanton, who didn't walk anyone in his first two starts this season, walked four and gave up five runs and five hits in just 2 2/3 innings. It was his first loss since Aug. 20, 2013. He was out of baseball in 2014 and started this season 2-0 with a 1.73 ERA after being called up from Triple-A Omaha.
"I take pride in not walking guys," Blanton said. "I can't think of too many games where I walked that many guys. You throw some borderline pitches that don't go your way. You throw some chase pitches that they don't swing at. Other than that, trying to fight command issues makes it that kind of day."
McCullers held the Royals scoreless until a solo homer by Salvador Perez cut the lead to 6-1 in the seventh inning.
He retired nine in a row after a single by Alex Gordon to start the second inning. Rios singled to start the fifth, but McCullers still faced the minimum in that inning after Christian Colon grounded into a double play.
Jarrod Dyson drew a walk to start the sixth but he set down the next three batters to end the inning.
"He had a really good breaking ball. ... It had good break on it," Kansas City's Lorenzo Cain said. "It definitely kept us off balance all night."
The Royals were without shortstop Alcides Escobar and first baseman Eric Hosmer, who both sat out with finger injuries.
Luis Valbuena singled with no outs in the second before Blanton walked Jon Singleton and Preston Tucker with one out to load the bases. A third consecutive walk, this one by Domingo Santana, made it 1-0.
Jason Castro's sacrifice fly pushed the lead to 2-0 before George Springer struck out to end the inning.
Altuve led off the second with a homer to the Crawford Boxes in left field to make it 3-0.
Valbuena singled with one out before Singleton drew a two-out walk. A bloop single by Tucker scored Valbuena and a single by Santana drove in another run to make it 5-0 and chase Blanton.
Santana, who went 0 for 17 with 14 strikeouts in his first stint in the majors last season, is hitting .250 with two doubles and two homers in 11 games this season.
"It's just trying to go out there and just have fun," he said. "Last year, I put too much pressure on myself."
Carter added a solo homer off of Brandon Finnegan in the fifth inning to snap an 0-for-7 slump.
Singleton doubled in the eighth inning for his first hit since being called up from Triple-A Fresno on Friday.
Royals: Escobar was scratched Monday with a bruise on his index finger. ... Hosmer was out with a sprained left ring finger and manager Ned Yost said he probably won't play during this series, which ends on Wednesday. Hosmer was injured on Saturday and left Sunday's game early with the problem. He had improved on Monday and the swelling in his finger was subsiding.
Astros: OF Colby Rasmus was for the third straight game because of a skin infection on his left arm caused by a bug bite. Hinch said Rasmus received intravenous antibiotics on Monday to try to eliminate the infection. He is day to day. ... OF Jake Marisnick, who is on the disabled list with a strained left hamstring, is improving and could start a rehabilitation assignment soon. ... RHP Scott Feldman (arthroscopic knee surgery) will throw a simulated game in Houston on Tuesday.
Houston left-hander Dallas Keuchel (9-3) opposes Danny Duffy (2-3) when the series continues on Tuesday. Keuchel, who is second in the AL with a 2.17 ERA, threw his third complete game of the season in his last start, a 4-0 win over the Yankees on Thursday.