Haren (12-11) won for the fourth time in five starts, holding the White Sox to two runs on six hits and a walk. He struck out four.
Nick Maronde, Garrett Richards and Scott Downs combined for two scoreless relief innings and Ernesto Frieri finished up with a scoreless ninth for his 20th save as the Angels clinched their three-game set.
Mark Trumbo's two-run single capped a big first inning during which the Los Angeles scored all four of its runs.
The win, coupled with Oakland's loss to the New York Yankees earlier in the day, pulled the Angels to within 2 1/2 games of an American League wild card spot.
Chicago's Jose Quintana (6-5) yielded four runs (one earned) on six hits in five innings.
Paul Konerko smacked a homer for the White Sox, whose lead in the American League Central shrank to one-half game over second-place Detroit.