CHICAGO -- Melky Cabrera smashed the ball down the right-field line and saw the umpire signal a fair ball. Then, in a flash, the White Sox were celebrating.
Cabrera's two-run double against closer Matt Bush capped a three-run ninth inning and gave Chicago an 8-7 victory over the Texas Rangers on Friday night.
Todd Frazier hit two homers and Jose Abreu finally connected at home after setting a club record by hitting his first 13 on the road.
Chicago rallied for its fourth win in 12 games.
"We have confidence in ourselves," Cabrera said through an interpreter. "We never think we're going to come back like that for sure. We know that if we do our best, we're going to have a pretty good chance to win the game."
Bush (2-4) came in to start the ninth with a 7-5 lead and walked off with his fifth blown save.
"It's terrible," he said. "I hate it."
Bush gave up a leadoff single to Adam Engel, and things unraveled from there. Willy Garcia's hit with one out put runners on first and second before Alen Hanson grounded an RBI single to center.
Cabrera then fouled off a curve, took a fastball for a ball and missed a curve before driving another one just fair, possibly hitting the chalk, down the line. Hanson dived headfirst across the plate with the winning run as catcher Jonathan Lucroy attempted to make a swiping tag, though he never caught the relay throw.
Chicago came away with its third walk-off victory of the season and second in four games, while Texas picked up its AL-leading 16th blown save.
"The problem is, this has been a situation for us pretty much all year long," manager Jeff Banister said. "We've got to find a way to close games out."
Anthony Swarzak (4-2) struck out the side in the ninth to pick up the win for the White Sox.
Texas' Joey Gallo hit his 21st home run and Rougned Odor also went deep. Shin-Soo Choo chipped in with three hits and two RBI, but the Rangers lost for the fourth time in five games.
Chicago's Mike Pelfrey struggled through five innings, allowing five runs and eight hits.
Texas' Austin Bibens-Dirkx wasn't much better, giving up four runs in 5 2/3 innings. Three of the eight hits he allowed were home runs.
Abreu and Frazier connected on consecutive pitches in the first inning. Abreu's drive halfway up the left-field bleachers was his first homer at Guaranteed Rate Field since Sept. 15. Frazier's shot gave the White Sox back-to-back homers for the sixth time this season.
Frazier's drive in the fourth gave him eight career multi-homer games -- and his first since he hit two at Texas on May 9, 2016.
Rangers: RHP Andrew Cashner was still sore after getting struck on his right arm by a broken bat Thursday at Cleveland. ... Banister wants to make sure LHP Martin Perez (broken right thumb) can field his position before he comes off the DL. He has been throwing pitches and is eligible to come off the 10-day DL against Boston on Monday.
White Sox: RF Avisail Garcia was out of the lineup for the second straight game because of left knee inflammation.
Rangers LHP Cole Hamels (2-0, 4.38 ERA) makes his second start since returning from a strained right oblique, while White Sox LHP Derek Holland (5-7, 4.26) meets his former team for the first time. Hamels gave up seven runs in 4 1/3 innings against Cleveland on Monday after missing two months. Holland spent his first eight seasons with Texas and played on the Rangers' AL champions in 2010 and 2011 before signing a one-year deal with Chicago in December.
More AP baseball: https://apnews.com/tag/MLBbaseball