CHICAGO -- Even with just a little offense, Jose Contreras and the Chicago White Sox found a way to win again.
Contreras pitched four-hit ball for eight innings, and the streaking White Sox scored twice in the eighth without a hit to beat the Kansas City Royals 2-1 Thursday.
Contreras (1-0) outpitched Royals starter Zack Greinke, leading the White Sox to their fifth straight win. They have the best record in the major leagues at 21-7, mostly because of solid pitching.
"Like I said in the past, we are doing whatever it takes to score runs. The story up until now is pitching," Scott Podsednik said. "Those guys are pitching their tails off, keeping us in ballgames. It's matter of us, as an offensive unit, to get things cranked up and start putting some runs on the board."
With Contreras' strong start, Chicago's team ERA dipped to 2.94.
Greinke (0-3) allowed two hits in 7 1/3 innings and Tony Graffanino homered in the seventh, but Kansas City couldn't hold the 1-0 lead and lost for the 15th time in 18 games.
Jermaine Dye was hit by a pitch, and Royals manager Tony Pena pulled Greinke for left-hander Andrew Sisco. Pinch-hitter Jamie Burke grounded out, advancing the runners to second and third. Sisco then walked Joe Crede and Juan Uribe, forcing in the tying run.
After Sisco's first pitch to Podsednik was called a ball, Pena called in Ambiorix Burgos. But he threw three straight balls to Podsednik, walking in another run and giving the White Sox a 2-1 lead.
"Both of those guys had problems throwing strikes, so it was a matter of us letting them come out of their zone to put guys on. I wasn't looking to swing, I was going to make them throw strikes before I went in trying to hit," Podsednik said.
Contreras retired 17 of his first 19 hitters. He struck out six and walked one in his longest outing of the season. Shingo Takatsu walked two in the ninth but earned his eighth save in nine opportunities.
Normally a slow worker, Contreras pitched at a brisk pace -- the game lasted just 2 hours, 10 minutes. White Sox manager Ozzie Guillen was impressed with the way Contreras attacked the strike zone.
"Contreras threw the ball really well, the best I've ever seen him throwing the ball, and he deserved to win," Guillen said. "He threw more strikes. Usually he throws behind the count or 3-2. Today he came out, challenged hitters, threw balls over the plate and made guys hit the ball."
Greinke faced the minimum 21 batters through seven innings. A.J. Pierzynski singled in the third, then was doubled off first base when Uribe lined out. Podsednik singled in the fourth, but was caught stealing.
Greinke struck out five, walked one and hit a batter.
"You've got to work with what you're given. We jumped out to a lead and it should have been enough. Avoiding the strike zone cost us today," Greinke said.
Graffanino, who played four seasons with the White Sox, hit his first home run of the season to break the scoreless tie.
"Their lineup last year, every batter you're thinking, hey watch out, that guy could hurt you. Now, it's like you feel more comfortable pitching against them but they'll beat you more because they've got that sneaky success against you," Greinke said.
- The White Sox have led in all 28 games this season, a major league record.
- Kansas City is 0-6 this season against Chicago.
- The White Sox are 18-4 against the AL Central this year.