CHICAGO -- Leury Garcia did all he could to stay ready, to be prepared when his chance came. When he got it, he sure did deliver.
The White Sox shook off a doubleheader sweep and finally took out the Angels after dropping their first five games this season and seven straight overall to them.
Jose Abreu extended his hitting streak to 17 games, and Chicago prevailed after blowing a two-run lead on a cool, rainy night.
Los Angeles tied it on solo home runs by David Freese in the seventh and Josh Hamilton in the eighth, only to lose on Garcia's line-drive single in the ninth -- a big hit by a backup infielder with only a .192 average.
"It's kind of tough when you don't play every day, but I'm still working," he said. "I'm still working. I'm still trying to get better every day and be ready for situations."
Alejandro De Aza, who entered earlier as a runner for Paul Konerko, started the winning rally with a one-out single off Morin (2-2). Conor Gillaspie followed with a broken-bat single past a diving Albert Pujols at first base to put runners on the corners.
The Angels then brought in Kole Calhoun to replace right fielder Collin Cowgill and serve as the second baseman as part of a five-man infield. Garcia, batting for Moises Sierra, lined a 2-1 pitch to left to drive in De Aza.
That made a winner of Zach Putnam (3-1), who worked 1 1/3 scoreless innings.
"We could have folded a lot of times. I feel like we do battle and compete the right way," said Gordon Beckham, who broke out of a 12-for-74 slump with two hits and a run. "Hopefully, a lot more wins (are coming)."
It stayed that way until the seventh, when Freese went deep. Josh Hamilton tied it at 2 with two outs in the eighth when he chased John Danks with his fifth homer and second in three games.
That drive came right after Albert Pujols hit a fly to the warning track in center.
The White Sox left Danks in even though Hamilton came into the game with a .438 average against him, and he pulled a pitch out to right.
The home runs spoiled an otherwise outstanding performance by Danks, who tied a career high with 10 strikeouts while giving up seven hits and one walk in 7 2/3 innings.
Skaggs wasn't bad, either, after missing nearly a month with a strained right hamstring.
He also gave up two runs in 7 2/3 innings, scattering five hits while striking out six and walking one. He threw 87 pitches -- 70 for strikes.
"I was kind of locked into the game, just excited to pitch after a month," Skaggs said. "It has been a long time. The team has been winning and I want to be a part of that. I was like a kid in a candy store, I was so excited."
Skaggs got a big assist in the first when Hamilton made a leaping catch in left to rob Beckham of a solo homer, but other than a shaky fourth, he didn't run into much trouble.
The Angels' Mike Trout was the AL Player of the Month for June after batting .361 with seven home runs. ... Abreu became the first White Sox player to be selected AL Rookie of the Month twice, taking the honor for June after hitting .313 with 10 homers and 22 RBIs. He was also the AL Player and Rookie of the Month for April. ... The White Sox have a day off before opening a three-game series against Seattle on Friday, with LHP Chris Sale (7-1, 2.30 ERA) Roenis Elias (7-6, 3.96). ... RHP Matt Shoemaker (5-2, 4.50) starts Thursday for the Angels against Houston, while LHP Brett Oberholtzer (2-6, 4.40) pitches for the Astros.