Cubs shortstop Starlin Castro left after the first inning with a slight strain of his right hamstring. He hurt himself trying to steal a base after he was hit by a pitch.
Moustakas hit a drive off Cubs starter Edwin Jackson leading off the second inning and a two-run shot off Carlos Villanueva in the third.
"It's about seeing as many pitches as you can," Moustakas said. "I've been seeing the ball pretty good as of late and I am trying to keep seeing the pitches, working the at-bats and fighting with two strikes."
Hosmer doubled twice, and Lorenzo Cain had two hits for the Royals. Kansas City starter Wade Davis gave up one hit in two scoreless innings.
The game at Cubs Park drew a Cactus League-record crowd of 14,680.
Royals: Davis, one of the candidates for the fifth spot in the rotation, was pretty efficient. He walked one, hit a batter with a pitch and had three strikeouts.
"Towards the end I got the release point down and got on top of (the ball)," he said. "I threw a couple of better changeups."
Cubs: Jackson gave up three hits and a run over two innings in his first start of the spring. He struck out three and hit a batter with a pitch.
Cubs: Castro didn't think his injury was as serious as a left hamstring problem that sidelined him from Feb. 27 to March 13 last spring.
"It's not too bad, like last year," Castro said. "You don't want to take a chance, so you take a couple of days. It was grabby at the end. Last year, I couldn't walk. Right now, I'm walking normal."
Third baseman Mike Olt is expected to see his first action in the field at first base on Monday against Milwaukee. He had only appeared as a designated hitter because of a "dead arm period."
Moustakas, a former No. 2 overall draft pick who hasn't put it all together in the majors yet, is off to a great start this spring after spending time in Venezuela.
The 25-year-old third baseman is 5 for 9 with three runs and six RBIs through four games after going 2 for 3 against the Cubs.
"We are trying to work on things right now," Moustakas said. "Results are nice, but we are trying to work on driving the ball, getting good pitches to hit and when you get to two strikes, battle."
Royals right-hander Guillermo Mota, 40, announced his retirement after a 14-year career in the majors. He signed a minor league contract with Kansas City on Jan. 16 with an invitation to spring training. Mota hadn't pitched in the majors since 2012 with San Francisco.
Royals third base coach Dale Sveum, fired after two years as manager of the Cubs, was able to greet some familiar faces without regret.
"I walked away with my head up and understood what I wanted to do, and did it. We got guys to play hard, we got guys to prepare every day," he said. "People have asked me, 'Would you do things differently?' No. I don't have that big of an ego. There's nothing I'd do differently."