Jose Guillen's sacrifice fly scored Esteban German with the winning run, and Joakim Soria pitched a perfect 10th to record his 30th save.
German, batting for Tony Pena Jr., started the 10th with a walk off A's reliever Huston Street. Mike Aviles doubled to right-center field. Mitch Maier fouled out, and Alex Gordon was intentionally passed -- his fifth walk of the game, a Royals record.
That loaded the bases, and Guillen unloaded them with a line drive to center fielder Carlos Gonzalez.
Actually Guillen, his left hip hurting, was surprised he was still in the game at that point.
"I thought Trey was going to take me out because I could hardly walk," he said.
Aviles had a spectacular series, going 8-for-14 with four doubles and a home run. He had three hits on Wednesday, getting his key 10th-inning double after not executing a sacrifice bunt.
"I just got lucky with that," Aviles said. "I didn't do my job. I didn't get the bunt down. Fortunately, he gave me a pitch that I could handle."
Earlier Aviles helped the A's get ahead and then helped the Royals get back even.
Mark Ellis and Jack Hannahan each singled off Royals starter Brian Bannister to start the second inning. Aviles drifted into short right field for Bobby Crosby's high popup, squinting into the sun -- and the ball dropped for an RBI single.
"That Bobby Crosby. He's hurt me my whole career," Bannister said. "I finally got him to pop up and it got in the sun or something."
Before the inning was over, Ryan Sweeney singled in a second run.
But, after Miguel Olivo doubled to open the Royals' third against Sean Gallagher, Aviles shot a double off the left-center-field wall for a run. He scored for a 2-2 tie as Maier singled.
The sun continued to be a problem for the Royals. In the third, Emil Brown got a single on a popup that fell between catcher Olivo, Bannister and third baseman Gordon. No runs resulted, though.
"It's never good to see popups dropping, but we won the game," Hillman said.
By the fourth inning, Bannister had matched his career high in strikeouts with seven and he'd also made a whopping 85 pitches. After he pitched out of a bases-loaded jam in the fifth, he'd expended 111 pitches and was through for the day.
"I did what I had to do to keep the runs down," he said.
In the sixth, the Royals pushed ahead 3-2 on Guillen's RBI single. Guillen did his part defensively, too. When Jack Cust belted a two-out hit deep to right in the sixth, Guillen threw to Aviles, who gunned down Gonzalez trying to score.
It would have been a nice footnote if Bannister had won, because his father, Floyd, was on the '88 Royals, although he didn't pitch in that sweep in Oakland.
That possibility ended in the seventh, when the A's snagged a 3-all tie. Brown singled off lefty Horacio Ramirez. He was relieved by Leo Nunez, who gave up an RBI single to Crosby.
The three-game sweep of June 14-16, 1988, conjures up memories of grand days for both clubs. The Royals of Frank White, George Brett and Willie Wilson outplayed the A's of Mark McGwire, Jose Canseco and Carney Lansford.
The Royals' winning pitchers were Bret Saberhagen in a 2-1 game; Charlie Leibrandt with a two-hit, 2-0 win, and Mark Gubicza, getting help from Dan Quisenberry, in a 9-5 romp.
White, on this trip as a TV broadcaster, hit a home run in the third game but couldn't recall any details. Until he was reminded that, before one of the games, prankster Saberhagen planted a rubber snake in the grass near first-base umpire Durwood Merrill's station. Merrill must have jumped 6 feet in the air when he came upon it.
"I do remember that," White said, laughing.
At the time, the A's were in first place in the American League West and the Royals were second, leaving town 4 1/2 games back after the sweep.
Now they've done it again after a span of 36 series.
"That's awesome," said Aviles, playing White's old spot, second base, for the completion of this sweep. "That's always nice."