Greinke (10-3) did not walk a batter in 80 pitches.
Closer Joakim Soria followed two other relievers to record his ninth save with a 1-2-3 ninth.
David DeJesus had two RBI with a fourth-inning homer and a fielder's choice groundout in the fifth. Mark Teahen added a fifth-inning RBI double for the Royals, who had eight hits on the way to breaking their three-game losing streak.
Pittsburgh's Andy LaRoche had two hits and one RBI. Jason Jaramillo hit an RBI groundout in the seventh, while Adam LaRoche had a run and three hits for the Pirates, who had won their previous four contests.
Losing pitcher Charlie Morton (0-1), back from a right-leg injury, surrendered three earned runs and seven hits in five innings.
Copyright 2009 by United Press International.