OAKLAND -- Before Wednesday's game against the A's, Royals manager Buddy Bell said Ryan Shealy was activated from the disabled list because of "necessity" and that he would have liked Shealy to get some more at-bats before returning.
Shealy, who hadn't appeared in a game since April 30, gave his skipper a little more than just another body as he came through with the game-winning hit in a 4-3 win at McAfee Coliseum.
"This game is so crazy," Shealy said. "This is the least prepared I've felt before a game as far as at-bats. Now, I'm like, 'Thank goodness I'm back.' "
Shealy's poke to center field on a 2-2 pitch from Kiko Calero scored pinch-runner Paul Phillips from second base with the go-ahead run in another nail-biter against the A's. The first three games of the four-game series each have been decided by one run.
"We've been through so many close games," said Royals catcher John Buck. "It's good to turn around that karma and get some of those one-run games on our side."
Shealy arrived in Oakland after getting a phone call to join the team while he was with Triple-A Omaha on Tuesday night. He received a 6 a.m. wake up call Wednesday morning in order to be in Oakland at 3:30 p.m. PT.
"I think I'm going to get another one for six tomorrow to keep it rolling," cracked Shealy.
"We needed a body, and Ryan was physically ready," Bell added. "That's probably the best he has hit all year."
The Royals started the inning in a 3-2 hole after reliever Jimmy Gobble gave up a solo homer to Jack Cust. Esteban German started things with a stolen base after a one-out walk, and he later scored on a double from Buck.
Buck, who had the game-winning homer on Monday, extended his hitting streak to six games and is hitting .350 with three homers and seven RBIs in that span.
"Johnny Buck once again gets a big hit for us to keep us in the game," Bell said.
The Kansas City bullpen struggled for the second straight night, as they gave up three runs -- two earned -- after Odalis Perez was brilliant for six innings.
Perez took a no-hitter into the sixth inning and retired 13 straight after giving up a two-out walk to Cust in the first inning. The left-hander's only hit was Jason Kendall's double over Mark Teahen's head in right field to lead off the sixth.
"[Perez] had a good mixture of stuff," Buck said. "Everything that he threw was going for strikes. It helped those guys from sitting on one pitch."
Perez has pitched at least six inning in each of his last five starts, going 1-2 with a 3.48 ERA in that span. The lefty from the Dominican Republic said he didn't worry about the no-hitter during the game and that his last few starts is the best he has felt since 2004 with the Dodgers.
"If I think about the no-hitter during the sixth, seventh, eighth and ninth innings," Perez said, "I'm not going to keep throwing my game. I just tried to go out there and throw strikes. For me, I'm just happy to be pitching the way I am pitching and I'm happy with my opportunity here."
Kansas City got its first two runs in the first inning. David DeJesus led off with a double, and he scored on Teahen's groundout to first. Emil Brown scored on German's single to right field.
The KC bullpen fell into trouble once again in the seventh after Perez exited. Joel Peralta gave up back-to-back singles to start the frame, and after a slick play from Tony Pena Jr., Gold Glove second baseman Mark Grudzielanek made an error in short right field.
Grudzielanek appeared to be right under the ball, but he looked at right fielder Teahen as the ball was falling. The ball tipped off his glove for his third error of the year.
"It just seems like one play a game eats us up," Bell said. "The popup that was misplayed tonight was usually our downfall, but maybe today it was our catalyst."
Ryan Quinn is a contributor to MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.