Olivo's 21st homer gave Kansas City a 5-0 lead with one out in the top of the third. Anderson's first homer made it 8-0 with one out in the sixth. Alberto Callaspo had two hits and three RBI.
Willie Bloomquist had four of the the Royals 12 hits, while Yuniesky Betancourt added two hits for the Royals, who have won eight of 10.
Winner Zack Greinke (14-8) gave up three hits in five scoreless innings with two walks and eight strikeouts.
Detroit's Miguel Cabrera hit a two-run sixth-inning homer off reliever Bruce Chen.
Aubrey Huff had two of the seven hits for the Tigers, who have lost seven of 10 before their battle with Minnesota this weekend for first place in the AL Central.
The losing pitcher was starter Edwin Jackson (12-7).