KANSAS CITY, Mo. -- As baseball games go, this was a dandy.
Cabrera rifled a bases-loaded, two-run base hit into left field with one out off closer Chris Perez, who had been 6-for-6 in save opportunities and unscored-upon for the season.
The fourth walk-off victory of the year gave the second-place Royals a 2-2 split of the four-game series with the AL Central-leading Indians.
"That was as great a game as was played in baseball today," said Royals manager Ned Yost. "Both teams played great baseball."
Perez (0-1) started the ninth and got in immediate trouble when Kila Ka'aihue doubled leading off.
Pinch-runner Mike Aviles went to third when Mitch Maier hit a pinch single. Alcides Escobar grounded to third baseman Jack Hannahan, who threw out Aviles at home for the first out. Chris Getz walked, loading the bases and Cabrera delivered.
It was the fourth walk-off and the fifth time the Royals have won in their final at-bat.
"This team does not give up. It just does not give up," said Royals starter Sean O'Sullivan, who went six innings as a light-to-moderate mist dampened everything and everybody in the park. "The mound got kind of slippery after a while, but it was OK."
Rookie Aaron Crow (2-0) pitched one inning. Cleveland starter Josh Tomlin pitched seven strong innings while going for his fourth victory in four decisions. Grady Sizemore had three hits and an RBI for the Indians, who will host the Royals for three games next week.
"It was a well played series by both clubs," said Cleveland manager Manny Acta. "You've got to give credit to those guys. They came against our bullpen yesterday and today again. They played very good defense. It was very wet out there. It never stopped."
Tomlin gave up one run on five hits, with a walk and four strikeouts. He lowered his ERA from 2.75 to 2.33.
"Tomlin was dynamic. O'Sullivan was very, very good," said Yost. "Tomlin was dynamic with his stuff. Changing speeds, had a great curveball, was painting the corners, kept the ball down. He was as good as you're going to see. I was very impressed with his outing."
Tony Sipp came out of the bullpen after Tomlin walked Getz leading off the eighth. He stole second and third, raising the Royals' league-leading total to 26 stolen bases. When Sipp walked Alex Gordon with two out and Vinnie Pestano relieved, Jeff Francoeur grounded an RBI single up the middle that shortstop Asdrubal Cabrera stopped from going through, possibly preventing the tying run from scoring.
Cabrera also saved a run for the Royals when he threw out Carlos Santana at the plate in the Cleveland eighth.
"With the wet grass, it was just a great throw by Melky," said Acta.
The Indians scored both runs off O'Sullivan in the fifth. Matt LaPorta singled leading off and Hannahan walked and both were sacrificed up a base before Sizemore lifted a bloop RBI single that dropped at Cabrera's shoes in shallow center.
After O'Sullivan walked Cabrera, loading the bases, Shin-Soo Choo hit a sinking liner to left field. Gordon scooped the ball off the grass and jumped to his feet and threw out Sizemore trying for third as Hannahan scored the second run.
Perez said it was not just the law of averages that caught up with him.
"Bad pitches," he said. "There's no such thing as law of averages. I fell behind Ka'aihue and he put a pretty good swing on it. I just left it out over the plate. Maier hit a first-pitch fastball. I couldn't bounce a slider to Cabrera with the bases loaded. He probably would have gone for it with that swing he took. I just couldn't bounce it. It's just one of those things.
O'Sullivan went six-plus innings and was charged with two runs on five hits. He walked three and struck out six, tying his career high. He was relieved in the seventh by right-hander Louis Coleman, who made his major league debut after being called up from Triple-A Omaha.
"You think about your major league debut on a bright, sunny day," Coleman said. "But still it was a dream come true."
Neither team hit a home run in the four-game series. ... Kansas City has played 14 of its first 19 games at home. ... The Indians lead the AL with 99 runs scored.