DETROIT -- Tigers manager Jim Leyland was feeling pretty lucky after this victory.
The Tigers became just the second team since 1986 to win a nine-inning game while stranding at least 18 runners. Detroit's 18 runners left on base matched its most since 1920.
"This is not a game we should have won, but we did," Leyland said. "We play nine innings, and we hung in there today and got some great breaks."
Guillen hit a one-out RBI double in the ninth to get the Tigers within one and put runners on second and third. After Brandon Inge grounded out, Perez (0-1) issued consecutive walks to Ramon Santiago and pinch-hitter Johnny Damon to force in the tying run.
"I can't walk Santiago in that situation," Perez said. "He's a bench player, and I've got to make him hit the ball with two out, but everything was leaking away from me, and I just couldn't make the right adjustment. The same thing happened with Damon."
His first pitch to Scott Sizemore bounced past Lou Marson, allowing Guillen to scamper home.
Phil Coke (1-0) pitched a scoreless ninth for the Tigers, who trailed 7-1 heading into the bottom of the sixth inning.
"That was a heck of a comeback," said Sizemore, who had three hits in a nice finish to his first week in the majors. "I'm glad that I was able to get a few knocks and help us pull that out."
Perez is serving as Cleveland's closer while Kerry Wood is on the disabled list with a strained muscle below his right shoulder. The Indians also were without outfielder Grady Sizemore, who was scratched with a stiff back.
Without Sizemore and facing Tigers ace Justin Verlander, Cleveland still got off to a fast start.
The Indians loaded the bases with no outs in the first and Travis Hafner followed with a sacrifice fly. After Jhonny Peralta struck out, Matt LaPorta walked and Luis Valbuena lifted a 1-2 pitch just inside the right-field foul pole for his first grand slam.
"The Indians have a great team, and you have to make good pitches to get them out," said Verlander, who has allowed 10 runs over 10 innings in his first two starts. "I didn't do that today."
Verlander settled down after the 43-pitch first, yielding six runs and five hits in five-plus innings, but his early struggles made the loss even tougher for Cleveland.
"That's why this game is such a waste," Indians manager Manny Acta said. "Who knows when we will ever score six runs off Justin Verlander again, if ever? You have to win games when you do something like that."
Jake Westbrook pitched 5 2/3 innings for Cleveland, yielding three runs and nine hits. He struck out seven and walked three.
Peralta and Choo homered for the Indians, and Valbuena finished with two hits.
"That's why you can't expect to walk eight or nine guys and beat anyone," Acta said. "We kept rolling their lineup over, and it seemed like Ordonez and Cabrera were coming up in every inning."
The Tigers cut it to 8-6 in the eighth on Inge's RBI single and a run-scoring double play.
The Seattle Mariners left 18 runners on base in a 5-2 win over San Diego on June 27, 2008. ... Detroit stranded 18 runners in a 10-1 loss to the Philadelphia Athletics in 1926 and again in a 12-2 loss to the Athletics in 1931. ... Acta said that he expects Sizemore to play in Monday's home opener against Texas. ... Detroit's Gerald Laird, who had been booed by the crowd of 26,081 throughout the game, received a standing ovation when he singled in the eighth inning, snapping a 0-for-17 start to the season. ... Cleveland's three homers gave them four for the season -- it came into the game last in the American League.