DETROIT -- Carlos Guillen doesn't when his right shoulder will be 100 percent.
For the moment, it's good enough.
"I know I can't do everything, so I'm just trying to get good at-bats," he said. "Tonight, I was patient and I hit the ball hard."
After back-to-back All-Star appearances, Guillen has struggled this year with leg and shoulder problems. He has missed 68 games and can no longer switch hit, but is batting .295 since returning in late July.
"I feel better physically and mentally," he said. "I still can't swing from the right side, but I feel comfortable left-handed."
Miguel Cabrera had four hits and three RBI for the Tigers, who won their third straight game. Cabrera capped the scoring with a two-run homer in the eighth.
"It was huge that we were able to keep adding on runs," manager Jim Leyland said. "When you hold a team scoreless for a few innings and keep scoring, it is going to deflate them."
Billy Butler connected for a two-run shot in the first and Brayan Pena added a solo shot in the sixth for the Royals. Luke Hochevar (6-6) pitched four-plus innings, giving up six runs and a career-worst 12 hits.
"I just didn't execute my pitches," Hochevar said. "It seemed like I would get two strikes, and they would foul off some pitches and then get a hit. That hurt me."
Cabrera reached on an infield hit in Detroit's two-run first and singled in Placido Polanco in the third to make it 4-2. He led off the fifth with another single and Guillen drove Hochevar's next pitch over the wall in right to extend the Tigers' lead to four.
Ramon Santiago and Alex Avila also homered for Detroit, which finished with 16 hits. Edwin Jackson (9-5) allowed three runs and nine hits in six innings.
"The offense did a great job for me," Jackson said. "It makes it a lot easier when they are scoring like that, because you've got room to make mistakes."
Kansas City failed to score in the fifth despite getting its first four hitters on base. David DeJesus reached on a leadoff double, but was thrown out trying to stretch. Two singles and a walk loaded the bases for Alberto Callaspo, who grounded into a double play.
"We had chances, but we just could never get the big hit when we needed one," Kansas City manager Trey Hillman said.
The Tigers scored in every inning they batted but the fourth, and had the bases loaded with one out in that inning. ... Butler's homer ended Detroit's scoreless streak at 21 innings. ... Detroit's Rick Porcello served the fourth of his five-game suspension. He is scheduled to return to the rotation Tuesday against Seattle. ... The game started just as the Detroit Lions were completing a 27-26 preseason victory over Atlanta at adjacent Ford Field. The games drew a combined crowd of 72,061.