Weaver (4-5) struck out six, walked two and improved to 3-0 with an 0.34 ERA in four career starts against the White Sox. Francisco Rodriguez pitched a perfect ninth for his major league-leading 21st save in 22 chances.
"You get one team that you have to battle against and there seems to be one team that you have a pretty good grasp on. They have a great offensive lineup. I just have a good idea of what holes they have and I try to keep them off-balance," said Weaver.
Los Angeles has won five of six, while the White Sox lost their second straight following a season-best, eight-game winning streak.
After walking Orlando Cabrera in the first inning, Weaver retired 12 of the next 14 batters. He also retired his final 11 batters before Rodriguez relieved.
After his last start Weaver made a small change to his mechanics.
"I made a slight adjustment. I felt like I wasn't going through the target," said Weaver. "I was falling backward which was disrupting my command a little bit. I have been concentrating on driving straight through the mitt."
He was aided in the fifth by Gary Matthews Jr., who made a sliding stop on Nick Swisher's drive to the right-field warning track and then threw out Swisher trying to stretch the hit to a double. Matthews also made a diving catch to end the game on Jermaine Dye's ball.
John Danks (3-4) allowed two runs and five hits in five-plus innings.
White Sox catcher A.J. Pierzynski and manager Ozzie Guillen were ejected in the ninth for arguing balls and strikes with plate umpire Alfonso Marquez. It was Guillen's second ejection of the season.
"I'm going to protect my players when I see a little inconsistent (calls)," Guillen said. "The last thing as a manager is going out there arguing strike and balls and safe (and) outs. You are not going to win that one no matter if you're right or wrong. It is my job to protect my players and that's what I did."
Guerrero hit the first pitch of the sixth inning for his seventh homer of the season.
"It was just a bad changeup to him. I can second guess myself all I want, but that's been a very effective pitch for me against him. I didn't think he would be sitting on it early on in the count."
Torii Hunter followed with a double that chased Danks.
Guerrero came into the game with a .254 batting average, his lowest average in his career after 48 games.
"It's just a matter of time for the big fella to get going. He has been swinging the bat a lot better.
Octavio Dotel walked Juan Rivera, and Casey Kotchman hit an RBI single. Left fielder Carlos Quentin's second throwing error of the game advanced the runners, but Dotel recovered by striking out Jeff Mathis, Brandon Wood and Sean Rodriguez.
- Angels INF Chone Figgins missed his third straight game because of a strained right hamstring.
- White Sox 1B Paul Konerko missed his second straight game with an injured right hand.
- While pinch-running in the ninth, Reggie Willits got stepped on and sustained a cut on his finger which required stitches.