The hot-hitting Hafner went 1-for-4 with a three-run homer and a walk, but all three outs were hard outfield shots.
"We got lucky a couple times," Maddon said.
In the ninth with Tampa Bay up one, Maddon employed a four-outfielder shift that included third baseman Akinori Iwamura. Hafner almost beat it, sending a 400-foot drive to center that was caught by Rocco Baldelli.
Hafner is 12-for-19 in his last five games.
Seo (1-1) gave up five runs and eight hits over six innings to snap a personal 13-game winless streak -- including four losses -- dating to a victory July 19 over the New York Yankees. It was his second win in 20 starts overall with Tampa Bay.
Zobrist gave the Devil Rays a 6-5 lead with an RBI groundout in the sixth. He also hit a run-scoring single in Tampa Bay's three-run second.
Al Reyes pitched a perfect ninth for his sixth save in six opportunities.
The Devil Rays led 5-2 before Hafner hit a long three-run homer in the fifth inning that struck a catwalk over the right-field stands, traveling an estimated 442 feet. He has homered in six consecutive games at Tropicana Field, and has nine homers in 14 games overall there.
"It's only 442 because something stopped it," Maddon said. "On the moon, that would be circling right now. That was as high and far as a ball has been hit in this place since I've been here."
Cleveland starter Paul Byrd (1-1) allowed six runs and 11 hits in six innings.
Tampa Bay responded with three runs in the bottom half. Ty Wigginton homered, B.J. Upton tied it at 2-2 with an RBI double and Zobrist put the Devil Rays in front when he stopped an 0-for-14 slide with a run-scoring single.
Tampa Bay tacked on two more runs in the third, thanks in part to communication problems between second baseman Barfield and right fielder Trot Nixon. Barfield got in the way of Nixon, who had Delmon Young's two-out RBI double deflect of his glove. Iwamura followed with a run-scoring single to extend the Devil Rays lead to 5-2.
"That was all my fault," Nixon said. "It was stupid that I didn't call him off. Josh ran a long way trying to make a great catch. I caused that inning to be longer and you can't do that."
Hafner walked in the first, the 10th consecutive plate appearance he had reached base. The streak ended in the third when he flew out to deep right-center.
Tampa Bay left-fielder Carl Crawford took an extra-base hit away from Hafner that might have tied it in the seventh with a diving catch.
"That's one of those you've got to go all the way because if you don't, that ball gets by you and that guy is going to run forever," Crawford said.
The Indians loaded the bases with two outs in the eighth, but failed to score when Jason Michaels grounded out. Cleveland is 1-for-18 with the bases loaded this season.
"We've got to make sure it stays fundamental and doesn't become mental," Indians manager Eric Wedge said.
Michaels entered in the sixth after David Dellucci left with tightness in his left calf. Dellucci is day to day.
- Hafner is 4-for-6 with two homers against Seo.
- Indians LHP Cliff Lee (strained abdominal muscle) gave up two runs and four hits over four innings in a rehab start for Triple-A Buffalo.
- The Devil Rays are hopeful a virus with flulike symptoms that has impacted much of the roster over the past couple weeks is winding down. Although some players and coaches are not at 100 percent, Maddon said "everybody is pretty much OK." Maddon did add postgame he thought he might be coming down with the illness.