KANSAS CITY, Mo. -- Jake Peavy wanted to finish, especially after surviving such a rocky start.
After the start was delayed 61 minutes by rain, Peavy (3-2) gave up a three-run double to Alberto Callaspo in the first inning and Billy Butler's homer in the third. But the right-hander allowed only three singles after that before he was pulled with one out in the ninth.
"As soon as he came off the mound to end the eighth, he looked up at me and said he wanted the next inning," White Sox manager Ozzie Guillen said. "I respect that. That's his game. He's a great pitcher. We got him here for a reason. I love people like that who are not afraid to go out there with the game on the line."
Matt Thornton got two outs for his first save of the season.
"I felt like I had a lot left and I did," Peavy said. "I just didn't make a very good pitch to Billy Butler. I felt like I had enough to finish the game. I felt like I could get three outs before they [would] score again. That's why I told Ozzie I was OK and wanted to go back out."
The White Sox, who rank last in the AL in hitting, batted around in a four-run seventh -- with Ramon Castro's two-run single the key hit. It was Castro's first hit of the season in his seventh at-bat since coming off the disabled list May 3.
"I was able to keep us close enough to make it happen," Peavy said. "Those are gratifying wins. In the first, we were real close to getting out of it. We were real close to having a real good start. It's a good start anytime the team wins."
Royals starter Luke Hochevar held the White Sox to two hits and one run through the first six innings, retiring 11 in a row before Mark Kotsay's single with one out in the seventh. That started a parade of six straight White Sox reaching base -- five singles and a walk. Juan Pierre's single scored Mark Teahen with the tying run. Gordon Beckham's single loaded the bases and chased Hochevar.
Andruw Jones' sacrifice fly off Brad Thompson scored Castro with the go-ahead run. The Royals have yielded 32 runs in the seventh inning this season.
"I think the difference today from the past was the clutch hitting," Guillen said. " We had a couple of big base hits when we needed it. The base hit by Castro was huge. That's what we've been missing, the hit with people on base. That's been a problem all year long."
Hochevar (3-2), who threw 26 pitches in the seventh while retiring only one, gave up five runs on seven hits and two walks in 6 1/3 innings.
"Hoch was just rolling along in the first six innings, commanded the baseball and in the seventh inning they tacked four runs on," Royals manager Ned Yost said. "I just talked to him in my office about it. For me, Hoch is a guy that when we get to the next level as an organization, he's going to be a guy that's probably going to be a No. 2 or 3 starter, and he needs to find ways not to let that happen."
Hochevar put the loss on himself.
"We had that ballgame won," he said. "I need to get it done in that inning and get out of that. That's on me. That's not good."
The Royals loaded the bases in the first when Mike Aviles singled, Butler walked and Jose Guillen was hit by a pitch. Callaspo, who has hit safely in 11 of his past 12 games, cleared the bases with a double to the left-field corner. Callaspo has 15 of his 25 RBI with two outs.
Butler drove a 2-2 pitch from Peavy to left in the third.
Royals reliever Robinson Tejeda strained his left calf Friday and is day to day. ... Jones was back in the White Sox lineup after missing the previous two games with a stiff neck. ... Castro made his third start for the White Sox since coming off the DL. ... Chicago OF Carlos Quentin missed his second straight game with a stomach ailment. ... Royals OF David DeJesus played his 187th consecutive game without an error.