Kansas City Royals starting pitcher Yordano Ventura delivers in the third inning of a baseball game against the Cleveland Indians, Friday, July 4, 2014, in Cleveland. Ventura pitched 8 and 1/3 innings and gave up six hits and one run. The Royals defeated the Indians 7-1. (AP Photo/Tony Dejak)
Ventura (6-7) blanked the Indians on four hits until Michael Brantley hit a leadoff homer in the ninth. The rookie right-hander was pulled after Jason Kipnis' one-out single. Ventura allowed six hits and struck out four in the longest outing of his career.
Salvador Perez and Christian Colon, making his first major-league start, had three hits apiece while Lorenzo Cain snapped an 0 for 11 skid with an RBI single in the third and a run-scoring double in the fifth.
Josh Tomlin (5-6), coming off a one-hit, no-walk, 11-strikeout performance against Seattle, allowed five runs and 11 hits in 5 2-3 innings.
The Royals are a major league-best 11-2 away from home since June 2.
Ventura retired the first 10 hitters before Brantley singled with one out in the the fourth. Carlos Santana's single moved Brantley to third, but Kipnis bounced into a double play.
Moustakas' homer on a 3-2 pitch put the game away in the sixth. The rally began on singles by Perez and Alcides Escobar.
Colon, a late addtion to the lineup when second baseman Omar Infante was scratched with lower back tightness, was 3 for 4, including a triple in the second for his first major league hit. Colon added a double in the fifth and an RBI double in the ninth.
Ventura has allowed three runs in 21 innings in three career starts against Cleveland. The 23-year-old right-hander held the Indians to one run in seven innings in a 4-1 win on June 11 in Kansas City.
Ventura gave up two runs and seven hits in four innings Los Angeles Angels in his last start, an outing that was cut short by a four-hour rain delay. He had pitched seven innings in each of his previous three starts.
The Royals, who are second in the AL Central, are 3-1 on a nine-game road trip and lead third-place Cleveland by four games.
The Indians, who opened a 10-game homestand, have lost four straight at home after winning 11 of 12 at Progressive Field. Cleveland was swept by Detroit in a three-game series June 20-22.
Tomlin turned in the best performance of his career against the Mariners last Saturday. He retired the first 12 hitters before allowing a leadoff single to Kyle Seager in the fifth, Seattle's only baserunner. Tomlin's gem marked the sixth time an Indians pitcher recorded 11 strikeouts with no walks in a shutout over the past 100 years.
It was also only the third time since 2002 that a pitcher has recorded a one-hit shutout with at least 11 strikeouts and no walks.
Kansas City left fielder Alex Gordon was hitless in four at-bats and is in a 2-for-36 slump.
Indians shortstop Asdrubal Cabrera was 0 for 4 and is in a 4 for 35 skid.
NOTES: The Indians announced the game as a sellout, their third of the season. ... Indians C Yan Gomes, a native of Brazil, wore his country's soccer jersey during batting practice. He kept an eye on the scoreboard, which showed Brazil's 2-1 win over Colombia in the World Cup. ... Raul Ibanez, signed by the Royals on Monday, started in right field. He made an awkward sliding catch on Gomes' line drive in the fifth. ... Royals RHP Jeremy Guthrie (5-6) faces LHP T.J. House (0-2) on Saturday.