James Shields shut down Houston striking out 12 batters -- they most since Zack Greinke in 2010 -- in his first victory in four starts. Kansas City's ace gave up just one run on four hits in eight innings.
The Royals (7-7) provided Shields with an early lead behind a first inning RBI from Eric Hosmer. Mike Moustakas also came through with a RBI single in the second to give Kansas City a 2-0 lead in the second inning. Alcides Escobar delivered the biggest hit with a double to right center scoring Alex Gordon and Billy Butler. Salvador Perez made it a five-run lead on a RBI double in the fifth.
Nori Aoki and Gordon each finished with two hits and two runs scored.
The sweep boosts Kansas City from fifth to third in the American League Central standings, now just one game back of the division-leading Detroit Tigers.
The Royals take their three-game win streak back to Kauffman Stadium Friday as they begin a series with the Minnesota Twins.