CLEVELAND -- Travis Hafner has hit a lot of balls much harder without getting the same satisfaction.
Hafner singled home the winning run with two outs in the ninth inning to give the Cleveland Indians a 5-4 victory over the Kansas City Royals on Saturday in the first game of a day-night doubleheader.
"I was trying to hit a line drive up the middle, but a grounder through the hole will do," Hafner said.
The Indians won their fourth in a row and sent Kansas City to its ninth consecutive loss at Jacobs Field -- and second straight in Cleveland's final at-bat.
"These games have been exciting because we haven't had many walkoff wins this year," Hafner said. "We've got some excitement in the clubhouse and hopefully we can keep it going."
Hector Luna, whose error helped the Royals score three runs in the ninth to tie it, opened the bottom half with a walk off Joe Nelson (0-1). Pinch-hitter Aaron Boone sacrificed and Grady Sizemore was intentionally walked.
After Jason Michaels struck out, lefty Jimmy Gobble relieved to face Hafner, who hit a grounder just past diving second baseman Esteban German to score Luna.
On Friday night, Sizemore hit a bases-loaded triple in the bottom of the ninth to give the Indians a 4-3 win.
"We're sporadic in areas and can't seem to get anything to line up right," manager Buddy Bell said after the Royals fell to 15-42 on the road.
Indians starter C.C. Sabathia limited the Royals to one run and five hits over eight innings, striking out 10. But the Royals rallied for three runs in the ninth off Jason Davis, helped by Luna's misplay at second base.
With one on and one out, Luna messed up a grounder for an error and Ryan Shealy followed with an RBI single that made it 4-2. John Buck was hit by a pitch to load the bases and Angel Berroa added an RBI single.
Rafael Betancourt (1-4) gave up a tying sacrifice fly to David DeJesus. The Indians avoided further trouble when Michaels made a long run and caught a drive by Mark Grudzielanek in the left-center field gap to end the inning.
"I thought he had no chance," Grudzielanek said. "I thought I had a sure wall ball over his head."
Michaels wasn't sure he could make the catch, either.
"When he hit it, I said, 'Let me get close,' but the wind kind of knocked it down a bit," said Michaels. "That was all the reach I had to get there."
Michaels hit a two-run homer as Cleveland took a 4-1 lead.
"Jason was huge for us," Indians manager Eric Wedge said. "He had big hits and that catch was the ballgame right there."
Royals starter Odalis Perez issued only two walks until Luna singled with one out in the fifth for Cleveland's first hit. In the sixth, Sizemore drew a leadoff walk and Michaels hit his ninth homer.
DeJesus doubled with two outs in the Kansas City eighth and Grudzielanek followed with an RBI single to spoil Sabathia's bid for his third shutout of the season.
"I'm just glad we won," Sabathia said. "That was the most important thing."
Cleveland loaded the bases against Andrew Sisco in the eighth on singles by Sizemore and Michaels and a walk to Hafner. Victor Martinez also walked to force in a run.
Jhonny Peralta singled to left off Ambiorix Burgos to make it 4-1, though Hafner was thrown out trying to score.
Perez allowed two runs and two hits over six innings, walking three and striking out six. The left-hander is 0-4 in seven starts since April 21. He was traded to the Royals for Elmer Dessens on July 25 after going 4-4 overall this season for the Dodgers.
- After the game, INF Ramon Vazquez was designated for assignment by the Indians, who recalled RHP Jeremy Guthrie from Triple-A Buffalo to start the second game.
- Peralta played his 25th consecutive errorless game at shortstop, a career best.
- Sabathia has an 0.78 ERA in three starts in August, allowing two earned runs over 23 innings.
- Mark Teahen went 3-for-4 and is hitting .320 in 61 games since being recalled from Triple-A Omaha on June 3.