KANSAS CITY, Mo. -- Jose Guillen has turned jeers into cheers.
He was booed after going 0-for-4 with three strikeouts to drop his average to .165 on May 5. Since then, Guillen has put together a five-game hitting streak, going 10-for-18, with five doubles, to raise his average to .216.
"He's been swinging the bat pretty good the last week," said Mark Grudzielanek, who had three of the 12 Kansas City hits. "It's important for him to do that and get some hits. Nobody wants to be down there like that, especially a good hitter like him. Guillen's a great hitter and he's had success in the league for a lot of years. He's not going to be there (below .200). The big rallies, he's usually going to be in the middle of it."
Despite his average, Guillen is tied for the club-lead with 19 RBI.
"It's good to see that bat get going," Royals manager Trey Hillman said. "We need it. That's what we got him for. He's swinging the bat very well. The most important thing for me is we got behind and didn't panic. We got some key hits from Guillen."
Guillen has said do not worry about him, that he is normally a slow starter.
"Jose didn't really like the cold weather, so hopefully the more it heats up the more he heats up," Royals catcher John Buck said. "It gets really hot around here and I know he can get really hot, so we're all for it. We'll see how hot he gets when it gets around 100."
With the game tied 2-2 in the eighth inning, Guillen doubled with two outs off Francisco Cruceta (0-1). Esteban German ran for Guillen. After Billy Butler walked, Mark Teahen had an infield single, but Edgar Renteria committed a throwing error on a backhanded flip to second base, allowing German to score an unearned run.
"That's the only chance we had," Renteria said. "You take a chance like that. If we win the game, everything is all right. That's a tough play. In that situation you have to take the best chance you have and I thought it was my best chance. You always want to get an out that late in the game. It was just a reaction."
Leo Nunez (3-0), the third of four Kansas City pitchers picked up the victory. Joakim Soria worked a perfect ninth to earn his ninth save in as many opportunities. He has yet to give up an earned run.
Detroit left-hander Nate Robertson gave up a season-high 10 hits, but only two runs. He allowed at least one hit every inning except the seventh, but for the first time in eight starts did not walk a batter.
"I was commanding my slider," Robertson said. "I made pitches when I had to get an out. I'd like to have the pitch back to Guillen that I left out over the plate."
Guillen doubled home David DeJesus and Grudzielanek with two out in the third for the only runs Robertson would allow. Grudzielanek went 3-for-3 off Robertson and is 8-for-9 in his career against the pitcher.
"Grudzielanek finds a way," Robertson said. "He didn't hit any one of those balls very well."
Zack Greinke held the Tigers to two runs. His ERA did go up to 1.93, which ranks second in the American League.
Greinke gave up a run in the first when Carlos Guillen's one-out double scored Placido Polanco.
Matt Joyce homered in the second for the only other run Greinke would permit.
"Tonight was good, but it started off real bad," Greinke said. "I said just keep it right there, go six or seven and more than likely we're going to win the game."
The last-place Tigers have lost eight of 10 and have dropped all four games to the Royals this season.
Tigers LF Gary Sheffield drew his 1,400th career walk in the eighth. He is the 26th player in big league history to reach that plateau. ... Royals CF Joey Gathright picked up his 10th infield single in the third. ...Soria broke a Royals record with 16 scoreless appearances to start the season. RHP Hipolito Pichardo started the 1997 season with 15 scoreless appearances.