CHICAGO -- White Sox manager Ozzie Guillen believes in his starting pitching. He just doesn't know if it will matter if his team's sagging offense doesn't pick up soon.
Jon Garland pitched into the ninth inning to win his second straight start and Chicago held on for a 2-1 victory over the Kansas City Royals on Friday night.
"I always say when you pitch good, you have a chance," Guillen said. "But when you score two runs, I don't know how long you're going to be good."
Garland (2-2) allowed one run and four hits in 8 1/3 innings. He struck out three and walked one.
"For the most part I was getting ahead early, and the big key tonight was defense," Garland said. "I'm not striking out a lot of guys so defense was big for us."
The White Sox picked up just five hits and came into the game with a .223 average, worst in the majors. Their three-four hitters, Jermaine Dye and Paul Konerko, went 0-for-8, dropping their averages to .193 and .203, respectively.
But Chicago (17-15) has survived with solid starting pitching. Its starters have gone at least six innings in 17 straight starts.
"All five of them have done a great job of going as deep as they can," catcher A.J. Pierzynski said. "They're inning-eaters and they save our bullpen, give those guys rest and they come in and finish the game when they need to."
The White Sox have won three straight and five of six.
"I'm happy where we are right now," Guillen said. "But it's like every time we win, it's like, 'Oh my god.' Because we expect a lot out of our offense and it hasn't showed up yet."
Pierzynski put Chicago in front 1-0 with a two-out homer off Odalis Perez in the fourth.
"Odalis pitched pretty well," Pierzynski said. "It's not like he was laying cookies up there for us to hit. He got pitches when he had to, got ground balls when he had to. It seems like we've been running into a string of guys that have been hot."
Chicago added another run in the fifth when Tadahito Iguchi doubled and scored from third on an error by Royals shortstop Tony Pena Jr., who let Darin Erstad's grounder roll between his legs.
"We gave it a run as usual," Mark Grudzielanek said. "We're just a little short. It's always one little play or a hit short of winning the ballgame."
Down 2-0, the Royals broke through against Garland with a run in the ninth on doubles by Esteban German and Grudzielanek. Matt Thornton relieved Garland and struck Mark Teahen out swinging.
"I should have been more aggressive in the ninth," Garland said. "They're not going to give up."
Bobby Jenks got Mike Sweeney to line out to third for his 12th save in 13 chances.
Perez (2-4) gave up two runs and five hits in seven-plus innings. He walked one and left in the eighth with no outs after giving up a single to Pablo Ozuna.
Ozuna got to third with one out on a stolen base and a throwing error by John Buck, but was nailed at home by Teahen trying to score on Konerko's fly ball to right.
"It was a great outing," Perez said. "Both Garland and me, it was a great game. He pitched better than me and he got the win."
The Royals had a good scoring chance in the sixth when Buck singled and went to third on consecutive groundouts. Grudzielanek lined out to second to end the threat.
"We were real flat today," Grudzielanek said. "When we did hit it hard, it was at people."
Kansas City has lost six of seven.
Pierzynski has six home runs, tied for the team lead with Dye. ... The Royals placed catcher Jason LaRue on the 15-day disabled list with a left shoulder contusion and recalled Paul Phillips from Triple-A. ... White Sox DH Jim Thome (strained muscle right rib cage) took live batting practice before Friday's game and might go on his minor league rehab Sunday. ... White Sox backup catcher Toby Hall (torn right labrum) is scheduled to start his minor league rehab Saturday.