KANSAS CITY, Mo. -- Jermaine Dye knew that after he climbed the outfield wall to make a catch his teammates would never let up.
"They were teasing me early about Spider-Man and all that crazy stuff," Dye said. "And then when I made the play on the wall they made more jokes about it."
Dye had a two-run single in the Royals' five-run first and drove in two more runs with a two-out single in a three-run fourth, increasing the White Sox's lead to 8-3. He made a leaping catch at the top of the right-field wall in the fifth inning to rob Mike Sweeney of an extra-base hit.
"I'm just happy to be back and contributing to help us win," Dye said. "I came out early today and got in the cage, did some work and got back to my usual program. I felt good in the cage and took that into the game and came up with some big hits early for us."
Juan Uribe and A.J. Pierzynski each homered and had three hits, and Scott Podsednik, Aaron Rowand and Willie Harris also had three hits for the White Sox, who matched a season high with 22 hits, the most allowed by the Royals this year.
Eight Chicago players had multihit games. Carl Everett was the only White Sox starter without a hit, but he walked three times and had a sacrifice fly.
"It's about time," White Sox manager Ozzie Guillen said of his offense. "Hopefully we'll see more of that."
Podsednik stole his American League-leading 51st base as the White Sox improved to 10-0 against the Royals this season, 15-1 dating to last year.
Harris, Joe Crede and Pierzynski also drove in runs in the first inning.
Freddy Garcia (10-4), who is 7-1 in his past 13 starts, gave up five runs and 12 hits -- nine to left-handed hitters -- in six innings. He struck out seven and walked none. The White Sox become the first staff in the American League with three 10-game winners -- Garcia, Jon Garland (15-4) and Mark Buehrle (11-3).
"Freddy was real rusty," Guillen said. "I don't think he was sharp. He worked behind a lot of hitters. It's most important that we win the game, but it's not the Freddy we've seen the last four or five outings."
"I felt strong and good, but sometimes you can't get people out," Garcia said. "We win and that's what matters. In the paper the next day, it says winner and loser. We won and that's what matters. Sometimes, you give up two or three hits and lose."
Zack Greinke (3-12), who had won his previous two starts after the All-Star break, lasted just 3 1/3 innings and is tied for the American League lead with 12 losses. He gave up eight runs -- seven earned -- on 10 hits and three walks.
"I just had a bunch of bad pitches and gave up a lot of hits," Greinke said. "I'm almost out of the first inning and I'm giving up hit after hit. I guess I challenged them too much instead of making quality pitches. Maybe I shouldn't have given them pitches to hit."
Terrence Long and David DeJesus each had three hits for the Royals, who had 16 hits. Long, who has a seven-game hitting streak, homered in the fifth to score DeJesus. Long drove in DeJesus again in the third with a single.
"I thought after we scored three (in the fourth) and came back to within two that we had a chance," Royals manager Buddy Bell said. "But we just couldn't stop them. It was just everything they hit was a base hit. We did some good things offensively to get back in the game, but when you give up that many runs there's not a whole lot you can do."
DeJesus singled in the first and scored on Mike Sweeney's sacrifice fly.