Updated

Jake Peavy doesn't know if Tuesday night's start was his last with the Chicago White Sox.

If so, it was one pitch from being memorable.

Peavy held Cleveland to one hit through eight innings, but gave up a two-run, game-tying homer to Travis Hafner in the ninth and the White Sox fell 4-3 in 12 innings.

Jason Donald singled home the winning run with two outs in the 12th off Nate Jones to send the White Sox, who were eliminated from the AL Central race on Monday, to defeat.

Dayan Viciedo hit a two-run homer off Cleveland closer Chris Perez in the ninth for a 3-1 lead. It looked as if Chicago was in business since Peavy, who had allowed only Shin-Soo Choo's 16th homer leading off the fourth, was in complete control.

Pinch hitter Michael Brantley led off with a single up the middle. Hafner, batting for Lou Marson, sent a towering drive down the line in right field that hit the foul pole and tied the game.

The sequence summed up the season for Peavy, who had a solid 3.37 ERA, but finished 11-12.

"It's fitting, the way my year seems to have gone," he said. "When I need to catch a break, I can't catch one. A cue ball off the end (of the bat) and the ball hits the foul pole."

White Sox manager Robin Ventura had no second thoughts about letting Peavy, who walked one and struck out eight, go out for the ninth.

"He was pitching great," Ventura said. "He earned that from what he did this year."

"You want to finish what you start," Peavy said. "I felt good. There was no reason for me not to go out there. I felt fine. I didn't have any stressful innings."

Peavy's $22 million option for next season almost certainly won't be picked up, but the right-hander has said he'd like to return.

Asked if he thought he had pitched his last game with the White Sox, Peavy said, "I certainly hope that's not the case. We'll see how the next few months play out. This has been a rewarding year as much as it can be. We've had something special here that we haven't had, a cohesiveness that hasn't been here."

Lonnie Chisenhall doubled with one out in the 12th against Matt Thornton (4-10), who then intentionally walked Russ Canzler. Right-hander Nate Jones came on to face announced pinch hitter Matt LaPorta, who was then replaced by lefty swinging Jack Hannahan. Jones struck him out before Donald hit a liner into the left-field corner.

Chris Seddon (1-1) pitched a scoreless 12th for the win, Cleveland's seventh in 17 meetings with Chicago. It was the left-hander's first victory since July 24, 2010, when he was with Seattle.

Hafner tied it with his 200th homer for Cleveland and 201st of his career. He is scheduled to play in Wednesday's season finale, which could be his last game in a Cleveland uniform. The Indians almost assuredly will not pick up his $13 million option.

"I'm happy to win it, but how about Hafner?," Donald said. "You almost wouldn't expect anything else. Whether it was his last homer here or not, it was so cool."

Viciedo connected for a 426-foot shot to center for his 24th homer — and fifth against the Indians this season. Viciedo is hitting .346 with 18 RBIs against Cleveland.

Orlando Hudson singled for his third hit before Viciedo delivered.

After Perez gave up Viciedo's homer, he allowed a one-out single to Jordan Danks and then hit Tyler Flowers in the left hand with a pitch. Flowers glared out at Perez and both benches were warned. After Perez retired the side, he and Flowers met at the side of the mound.

Chicago scored in the sixth off Indians starter Justin Masterson. Dewayne Wise hit a one-out double and scored on Orlando Hudson's line single.

NOTES: Chicago 1B Paul Konerko will have surgery on his left wrist Thursday. Ventura said Konerko might play in the season finale on Wednesday. ... Sox 1B/DH Adam Dunn struck out twice and has fanned 222 times, two shy of the major league record set by Mark Reynolds with Arizona in 2009. ... Before the game, Perez said while he respects Manny Acta, he had a problem with the fired manager not confronting umpires.