Mendoza was winless with an 8.05 ERA in his first four home starts this season but was at ease on the mound Sunday.
"Mendy threw a tremendous game," Hosmer said. "He really had his sinker working and was pounding strikes and playing great defense behind him. Moose (Mike Moustakas) made a lot of great plays behind him."
The Royals' bullpen has not allowed a run in 17 2/3 innings in the past six games. Royals manager Ned Yost had no doubt Kansas City had the upper hand if the outcome would be determined by the relievers.
"Mendy was throwing great and still was at 90 pitches, but was fixing to come around for the fourth time to the top of that order," Yost said. "And I'm sitting there thinking I've got (Aaron) Crow, (Greg) Holland, (Kelvin) Herrera, (Tim) Collins, Hoch (Luke Hochevar) and (J.C.) Gutierrez, who threw two easy innings last night, plus Bruce Chen. I'm fully stocked. It doesn't matter how long this game goes, I've got enough pitching to wait it out."
Crow (2-1) worked a scoreless eighth to earn a victory that gave the Royals their longest winning streak since taking seven in a row form Sept. 10-17, 2011.
With one out in the eighth, Chris Getz singled and stole second off reliever Amrbiz (1-3). Gordon, who was 1 for 18 on this homestand, singled to center for the first run. Gordon moved to third on center fielder Trevor Crowe's errant throw home and scored on Hosmer's single.
Greg Holland pitched a spotless ninth for his 12th save in 14 opportunities.
Harrell, who has won only once since April 29, was held the Royals to two singles in seven scoreless innings.
"He was outstanding," Astros manager Bo Porter said. "Even early on when he walked a couple of guys he made good pitches to get out of innings. He did a tremendous job going seven innings against a pretty good-hitting lineup."
The Astros got only one runner past first base in the first six innings. Ronny Cedeno doubled to start the third and advanced to third base on a groundout, but was stranded there.
Mendoza retired 12 in a row after Cedeno's double.
Harrell, who had won only one of his previous seven starts, retired 13 in a row from the second inning until Perez's single in the sixth. But he was quickly erased when Billy Butler grounded into a double play.
Perez also singled in the first, when the Royals loaded the bases with two outs on walks to Butler and Moustakas walked in the first to load the bases with two outs. Harrell got out of the jam by retiring David Lough with a fielder's choice grounder.
Harrell allowed just one runner -- Jeff Francoeur, who walked to leadoff the second -- after the first inning. Harrell threw 51 pitches -- only 26 strikes -- in the first two innings, but needed just 48 pitches for the next five innings.
"I was more aggressive," Harrell said after the first two innings. "I started pounding the zone and using my sinker more to get ahead. And then I threw some really good curveballs."
Royals SS Alcides Escobar, who is mired in a .191 slump with a .221 slugging percentage in his past 32 games, was given Sunday off after playing in the first 59 games. ... Astros OF Brandon Barnes, who left the game Saturday with left hamstring tightness, did not play Sunday. ... It was Kansas State day at Kauffman Stadium with Wildcats' shooting guard Will Spradling and linebacker Tre Walker throwing out the ceremonial first pitch. ...The Royals host AL Central-leading Detroit for a three-game series with RHPs Doug Fister and Jeremy Guthrie the probable starters for Monday.
Copyright by STATS LLC and The Associated Press
KANSAS CITY, MO - JUNE 9: Lucas Harrell #64 of the Houston Astros throws in the first inning during a game...