CLEVELAND — The Cleveland Indians seemed as if they were in for an easy night after scoring six runs in the first inning against the Minnesota Twins.

Not so fast. The Indians needed every bit of their early advantage and survived a harrowing ninth inning for an 8-7 win and their fourth straight victory.

"We kind of had to hang on for dear life, but we did," manager Terry Francona said. "We go home happy."

Cleveland led 8-3 after five, but Minnesota scored four times in the final three innings. Vinnie Pestano, subbing as closer for the injured Chris Perez, allowed two runs in the ninth, including Chris Parmelee's second homer of the game that cut the lead to one.

Pestano struck out pinch-hitter Josh Willingham on a 3-2 pitch with the tying run on first for his third save.

"We won the game," Pestano said. "That's the bottom line. If I go out there and give up five runs and we win by one, we win by one."

For most of the night, it didn't look like such dramatics would be necessary. Michael Bourn had three hits and three RBIs and Corey Kluber won his third consecutive start. Cleveland took advantage of five first-inning walks to score six runs. Jason Kipnis added three hits to pace the Indians, who are 8-2 since losing eight in a row.

Minnesota starter P.J. Walters (2-3) walked five of the nine batters he faced, hit one and didn't get through the first inning when Cleveland had only two hits. Kipnis and Bourn both had two-run singles while Jason Giambi and Drew Stubbs drew bases-loaded walks.

Kluber (6-4) gave up three runs in 5 2-3 innings. The right-hander has allowed four earned runs in 21 2-3 innings in his last three starts.

"I wasn't as sharp as I'd like to be, but there are games when you go out there and hopefully get through it and give your team a chance to win," he said.

Kluber ended the Indians' eight-game slide when he held Texas to one run in eight innings on June 11. He followed that with eight shutout innings against Washington on June 16. Kluber, who threw 100 pitches Saturday, gave up eight hits, struck out four and walked one. It appeared the game was under control when he was pulled but the Indians needed five relievers to finish the game.

"There were some highs and lows," Francona said of his bullpen's performance. "Fortunately, the highs won out."

Minnesota scored in the seventh and Parmelee homered to lead off the eighth, making it an 8-5 game. The Twins had the tying run at the plate with one out but Rich Hill struck out Mauer and Ryan Doumit.

Justin Morneau doubled to begin the ninth and scored on Oswaldo Arcia's ground ball for the second out of the inning. Pestano walked Brian Dozier before finally striking out Winninhgam on his 34th pitch of the inning.

"That was a really long inning," Francona said. "Anytime you get up near 30 pitches, that's a long inning."

Mauer hit a two-run homer in the first for Minnesota, which has homered in seven straight games. Arcia added a solo shot in the fourth.

Walters' problems began when he walked Bourn and hit Mike Aviles to start the first. Kipnis' double into the left corner tied the score. After Michael Brantley flied out, Carlos Santana and Mark Reynolds walked to load the bases. Walters then walked Giambi, who was batting .180, to force in a run.

Lonnie Chisenhall flied out but a walk to Stubbs made it 4-2 and ended Walters' night. Bourn greeted Anthony Swarzak with single to center and Cleveland led 6-2. Walters threw 46 pitches, only 18 of which were strikes in two-thirds of an inning. He failed to pitch into the sixth inning for the first time in six starts this season.

"Walters just didn't have it tonight," Twins manager Ron Gardenhire said. "It was just a bad night. He couldn't find anything. Hopefully, we won't see that again from him."

Stubbs and Bourn added RBI singles in the fifth off Ryan Pressly. Kipnis, who singled, doubled and tripled, is batting .379 (25-for-66) in 19 games in June.

Trevor Plouffe added an RBI single for the Twins in the seventh.

Minnesota came to town riding a three-game sweep of the Chicago White Sox but lost to the Indians 5-1 on Friday. The Twins are 13-7 against Cleveland since June 2, 2012.

Indians first baseman Nick Swisher, who has missed six games with a sore left shoulder, will probably return for Sunday's series finale or Monday when the Indians open a series in Baltimore. Swisher, who is in a 6-for-55 slump, took batting practice Saturday.

NOTES: Perez (strained right rotator cuff) will throw a simulated game Sunday at Double-A Akron. He will make another minor league rehab appearance next week. ... Francona said RHP Zach McAllister (sprained middle finger) will play catch at 120 feet in the next couple of days. There's no timetable for when McAllister will throw off the mound. ... Twins OF Austin Hicks (left hamstring strain) could start a rehab assignment at Triple-A Rochester on Sunday. He has been on the 15-day disabled list since June 10. ... Twins OF Wilkin Ramirez (concussion) played five innings Friday for Single-A Fort Myers. He has been on the 7-day DL since May 26. ... The teams wrap up their three-game series Sunday. Twins RHP Mike Pelfrey (3-6) takes on RHP Carlos Carrasco (0-2).