CLEVELAND -- Disgusted with himself, Travis Hafner complained to anyone who would listen that he was tired of hitting infield singles, bloops and dribblers.
After a powerless month, Hafner needed a home run -- badly.
The Indians needed one, too.
Hafner's two-out, two-run homer in the ninth inning off Seattle closer Brandon League sent Cleveland to its latest dramatic win, a 5-4 victory on Friday night over the Mariners, the newest victim of the Indians' late-winning, walk-off ways.
"We're having a blast," Hafner said. "This is fun."
Hafner, who hadn't homered since April 17, belted an 0-1 pitch from League (0-4) over the center-field fence, sending a crowd of 33,774 fans -- the Indians' second-largest at home this season -- into a feverish frenzy. After being mobbed near home plate by his teammates, Hafner leaped into second baseman Orlando Cabrera's arms and the crowd screamed lyrics to "Cleveland Rocks" as fireworks exploded.
It was Cleveland's ninth last at-bat win in a season growing more special by the day.
The Indians are an AL-best 24-13, have the majors' best home mark at 15-4, and their last five wins at Progressive Field have all come in their final swing.
Long after the crowd had dispersed, and the ballpark darkened, the giant scoreboard remained lit with this season's slogan: "What If?"
Tony Sipp (2-0) pitched a perfect 1 1/3 innings for the win, which came after the Indians dropped two straight to Tampa Bay.
"This felt like a big win," Hafner said. "After losing the last two games, it was important to get it going again."
Hafner's homer spoiled Seattle manager Eric Wedge's homecoming in Cleveland and was yet another punch-in-the-gut loss for the Mariners, who have lost three of their last four on walk-off hits.
League has been the loser in each of them, and following the game, the right-hander sat and stared into his locker.
"It's been a tough stretch," Wedge said. "League was one pitch from finishing it off. You have to handle it and be strong, but that doesn't make it hurt any less."
After being held in check by Seattle starter Doug Fister for eight innings, the Indians entered the ninth with just four hits and trailing 4-2. They were three outs from disappointing a raucous crowd.
But Michael Brantley opened the ninth with a double to left-center, and Asdrubal Cabrera followed with an RBI double over the head of rookie left fielder Carlos Peguero, who seemed to freeze on the hard hit that was right at him.
Up came Hafner, who had struck out looking in his previous at-bat in the seventh. Hafner looked at a fastball for strike one before driving League's second pitch, a sinker, over the wall for his second career walk-off homer and first since 2006.
Choo and Brantley also homered for the Indians, who believe they can stay in contention all season.
"You look around and there's a lot to like about our team," Hafner said. "We feel it's a team that can play well all season and win a lot of ball games. It's about getting to the playoffs, and that's this team's goal."
Indians manager Manny Acta loves the fight in his team, but he joked that he could live without all the late-inning drama.
"I knew they would not roll over," he said. "I knew they would put up quality at-bats. But I've had enough of that."
Justin Smoak hit a two-run homer for Seattle and Peguero hit his first major league homer, a 422-foot solo shot.
Although he's not likely to admit it, the stoic-and-steady Wedge had to be stung by the loss. He managed the Indians for seven seasons, guiding them through a tough rebuilding period and leading them to just one playoff appearance in 2007, when they missed the World Series by one win.
Wedge, who was never truly embraced by Indians fans, was fired after losing 97 games in 2009. In Seattle, he's dealing with many of the same issues he dealt with in Cleveland.
"This has been a tough streak," he said. "These are some of the things [young players] have to go through to be better in similar situations."
Fister was supposedly a break for the Indians, who have been facing some of the AL's top pitchers recently. In 12 games leading into the series opener, Cleveland had gone against seven pitchers ranked in the top 20 in ERA in the league.
Fister looked as if he belonged there.
Other than giving up the homers, he was in command. Fister retired the side in order in four innings, and he faced only three batters in the second, when the Mariners turned a double play. But when Wedge turned things over to League, the Mariners sunk again.
For the third straight game, the Indians played without center fielder Grady Sizemore, who is resting a bruised right knee. Sizemore did some light drills -- he played catch and hit off a tee -- and the Indians are being extra cautious with the 28-year-old, who underwent season-ending surgery on his left knee last June. ... Cleveland didn't get win No. 24 until June 11 last year. ... LHP Jason Vargas on Thursday became the first Mariner to pitch nine shutout innings in a no-decision since Indians pitching coach Tim Belcher did it for Seattle on June 4, 1994.