John Buck had one run, two hits, and two RBI; Angel Berroa hit an RBI single; Angel Sanchez hit a sacrifice fly; while Shane Costa also had a run and two hits for the Royals (59-99), who snapped a seven-game losing streak.
Winning pitcher Mark Redman (11-10) gave up three runs and nine hits in eight innings with no walks and four strikeouts.
Joe Nelson earned his ninth save.
Rondell White had two hits and two RBI; Michael Cuddyer had two runs and two hits, including a solo home run; and Joe Mauer had one run, two hits, and one RBI for the Twins (94-64), who had a four-game winning streak snapped.
Losing pitcher Carlos Silva (10-15) surrendered five runs and six hits in four innings.