Carlos Quentin hit a pair of home runs Sunday night, including the game-winner to lead off the bottom of the ninth inning, as the White Sox avoided a sweep and finished a short homestand by winning four of six games.
Quentin's second shot gave the Sox a 3-2 victory over the Angels in a game that took only 2 hours 5 minutes and made them winners for the ninth time in 11 games.
Scott Linebrink, who pitched his 12th scoreless inning in May, was the winner in relief.
Contreras struck out 10 batters, the fourth time he has fanned at least that many in a game in his career. His ERA over the last four games is 1.61.
Contreras came in having won three straight games and four of his last five decisions, showing signs that he may be close to his 2005 form, when he finished 15-7.
"I don't think he ever will be," manager Ozzie Guillen said. "In 2005 that kid was amazing. He got older, and there's a lot of innings since then. I think he's healthy and I think that's the most important thing. Last year he was a mess. He had problems off the field, he got back problems on the field, hamstring problems.
"I don't care how good you are, if you're not healthy, you're not going to be that good. This year, since spring training, he's throwing the ball well. [But] this is a marathon; you've got to keep it up six months."
Contreras was perfect the first time through the Angels' order but hit a big bump to start the fourth when Maicer Izturis singled and Gary Matthews Jr. homered to right field to tie the game at 2-2.
Contreras then struck out the next four batters and retired nine in a row before Garret Anderson led off the seventh with a double and was stranded there.
Matthews' long shot matched Quentin's in the third inning. Quentin hit a 398-foot homer after Alexei Ramirez singled. He now has a league-leading 14 long balls and is second in the AL with 43 RBIs.
The Angels' John Lackey made only his third start of the season after going on the disabled list in spring for a strained right triceps. In his first start, he limited the Sox to one run in seven innings.
During the first two games of the Angels' series, Sox batters had been limited to one run and seven hits by Joe Saunders, Jered Weaver and Francisco Rodriguez.
"I don't think the expectation is too high with our offense, because every time we get [bad] days people start panicking," Guillen said.
While the Sox offense has struggled, it has been picked up by the starting staff.
"That's one of the reasons we're still fighting," Guillen said. "If the starting rotation wasn't pitching, we'd have lots of problems."
A Memorial Day weekend crowd of 36,195 enjoyed itself, cheering as a plastic blowup doll was tossed around the left-field bleachers and then booing when an usher grabbed it.