BALTIMORE -- Sidney Ponson is faring far better than last season. Then again, it would have been extremely difficult for him to do any worse.
Ponson (4-1) had a season-high eight strikeouts and two walks. He is 3-0 in his last four starts and already has more wins than he did at the All-Star break last season, when he was 3-12.
"I'm hitting the corners this year. Last year I wasn't," he said. "Did you expect me to go 3-12 this year? I guess so, huh? Last year I didn't start good. Seems like you guys expect me to do the same thing over and over again, but it's not going to happen."
Ponson gave up three straight hits opening the fourth inning and fell behind 1-0, but he avoided further damage by getting a double play and a strikeout.
"Last year, he just always seemed to get that one pitch that got him in trouble. This year, he's the opposite," Orioles manager Lee Mazzilli. "Every time he gets in a jam, it seems he makes the right pitch to get out of it."
B.J. Ryan struck out two in a perfect ninth for his sixth save in six chances.
Ponson started the season as the fourth pitcher in the rotation, but he now leads first-place Baltimore in wins. The Orioles have won 10 of 12 and has given up only three runs in their last three games.
With his first three-hit game of the season, Surhoff lifted his batting average from .206 to .263. His two-run single in the fourth inning gave the Orioles a 3-1 lead, and Ponson made the margin stand up by allowing only one runner over his final four innings.
"He was really aggressive out there, and late in the ballgame was even more aggressive," Royals manager Tony Pena said. "He did not lose any velocity in his fastball."
Ken Harvey drove in the lone run for the Royals, who have lost 13 of 15. Kansas City is 7-22, its worst record after 29 games, mainly because of an offense that is batting .233.
"We played great defense and our pitchers did a good job," Pena said. "We're going to hit. We need to find a way to score some runs."
Sammy Sosa was a late scratch from Baltimore's starting lineup with an abscess on the bottom of his left foot, and Melvin Mora left after a cramp developed in his right leg while he ran out a first-inning bunt. Sosa and Mora were two of four Orioles to have started every game this season, along with Brian Roberts and Miguel Tejada.
Sosa had the abscess drained, and Mora was walking comfortably after the game. Mazzilli expected both to play on Saturday.
The Orioles trailed 1-0 before batting around in the fourth against Denny Bautista, who was traded from Baltimore last season for Jason Grimsley. Chris Gomez, who replaced Mora in the second inning, singled and Rafael Palmeiro walked before Javy Lopez hit an RBI double.
Surhoff followed by grounding a single under the glove of Harvey at first base. After Bautista loaded the bases with a two-out walk to Roberts, Kyle Snyder retired David Newhan on a grounder.
Bautista (2-2) entered with a 1.29 ERA on the road, but in his first outing against his former team allowed three runs, six hits and two walks in 3 2/3 innings.
"I was not with them for that long," Bautista said. "I asked (Pena) why he took me out; he said I threw too many pitches in one inning."
Kansas City went up 1-0 in the fourth inning on successive singles by Mike Sweeney, Matt Stairs and Harvey. Stairs ended a 2-for-18 skid, and Harvey snapped a 2-for-17 drought.
The Royals got only one more hit, a bunt single by Ruben Gotay in the sixth.
"We're struggling," catcher John Buck said. "We need a win, period."