TUCSON, Ariz. -- Royals right-hander Zack Greinke saw beyond the three home runs that threatened to land in the foothills of the Santa Catalina Mountains.

Admittedly, he made mistakes on the two middle-in fastballs that Mark Reynolds and Chris Snyder cranked high over the left-field wall, back-to-back in the Diamondbacks' second inning.

"Those two pitches were pretty much unacceptable," he said after working four innings on Tuesday at Tucson Electric Park.

Greinke gave up three runs on three solo shots, the last to Eric Byrnes in the third. Then he struck out three straight batters and retired the last six D-backs in order.

This was Greinke's third start and he's given up three runs in each of them.

"I'd hoped they'd be going a little better," he said, "but at least today, by the end of the game, I pretty much had all four pitches working and that's pretty much the goal.

"But you've got to do it consistently over the course of a game and then over the course of several games and then over the course of a season. So just a couple of innings is just a start. Now I've got to do it every time out. And it's about the time where it needs to be coming together."

Greinke issued no walks on Tuesday and the three homers were the only hits against him. Left fielder Mark Teahen prevented a possible hit in the fourth with a diving catch on a Snyder line drive.