CLEVELAND (AP) -- The Kansas City Royals needed a big hit.
Moustakas' three-run homer was the key blow in a four-run fourth inning as the Royals raised their record to 10-0 when scoring at least four runs.
The burst was more than enough for James Shields (2-2), who allowed two runs and struck out nine in six innings in winning his second straight start.
''Moose drove one in the seats,'' Royals manager Ned Yost said. ''It was good to see to get on the board like that.''
''That's huge,'' said Shields, who has 21 strikeouts in his last two starts. ''We're down 1-0 right there. Moose put a good swing on it and got us the lead.''
Yost knew his team was in good shape with his ace in charge.
''You've got James Shields on the mound throwing his usual game,'' Yost said. ''Nine punch-outs and combine that with what he did his last start, that's pretty impressive work.''
Eric Hosmer had four hits, including an RBI double in the seventh.
''I really didn't have my best stuff, but I located my fastball when I needed to and I got some early outs,'' Shields said. ''Overall, it was a good outing.''
Cleveland manager Terry Francona turned 55 years old Tuesday, but the Indians were unable to win a third straight game for the first time this season.
''Unfortunately, Shields is pretty much the same every time we see him. With his command and aggressiveness, he's one of the best,'' Francona said.
Danny Salazar (0-3) didn't allow a hit until the fourth, but unraveled quickly when Hosmer led off with a single, the first of five hits in the inning. Billy Butler followed with another single before Salazar retired the next two hitters. Moustakas drove a 1-1 pitch into Kansas City's bullpen in right field, breaking a 2 for 15 slump.
Alcides Escobar followed with another single, stole second and went to third on catcher Yan Gomes' throwing error. Jarrod Dyson's bunt hit made it 4-1.
Salazar didn't get through the fifth. Hosmer doubled with one out and scored on Butler's double.
Hosmer was 4 for 5. His seventh-inning double gave Kansas City a four-run lead and he added a single in the ninth.
''After that big swing from Moose, it loosened everybody up,'' Hosmer said. ''We know anytime Shields is on the mound it's not going to take very many runs to get a win.''
Salazar, who pitched well in 10 starts after being called up last season, hasn't been able to find the same consistency in his first four starts. The right-hander allowed five runs and seven hits in 4 1-3 innings. He struck out six.
Shields allowed an unearned run in the second, but held the Indians in check until the sixth.
Bourn's bases-loaded single put Cleveland ahead. Second baseman Omar Infante's fielding error on Asdrubal Cabrera's ground ball started the rally. David Murphy singled and Lonnie Chisenhall was hit by a pitch with two outs. Bourn's sharp single to right scored Cabrera.
Royals catcher Salvador Perez was 0 for 5 and is hitless in his last 22 at-bats.
Cleveland third baseman Carlos Santana is in a 2 for 43 skid after going hitless in four at-bats.
The game-time temperature was announced at 50 degrees, but a strong wind made it feel much colder. The crowd of 8,848 barely surpassed the all-time low at Progressive Field of 8,726.
NOTES: Royals 1B coach Rusty Kuntz, who suffered a broken left arm during batting practice Monday, will undergo surgery Wednesday at Cleveland Clinic. Kuntz was struck by a line drive hit by Perez. Major league coach Mike Jirschele will fill in for Kuntz for at least the remainder of the series. ... The squirrel that ran on the field during Monday's game brought back memories for Francona when he was managing winter ball in the Dominican Republic. ''It was about 15 minutes before the game and there was a goat, a dog and a chicken in center field,'' he said. Francona said the intruders were removed by the time the game began. ... Royals LHP Jason Vargas (2-0) faces Indians RHP Justin Masterson (0-0) in the third game of the four-game set Wednesday at 7:05 p.m.