CHICAGO -- It's been a rough start to the season for the Angels and Chris Sale almost dealt Los Angeles with another embarrassing blow.
Mike Trout's sharp single to center ended the perfect game bid with one out in the seventh, on Sale's 70th pitch.
|More on Angels-White Sox|
|More MLB coverage|
The Angels already trail the Rangers by 10 games in the AL West.
"A couple of years ago (2007), (Mark) Buehrle threw a no-hitter against us when I was with the Rangers. It had that same feel to it. It's like walk, get a hit or something. If this dude throws a perfect game, it's going to be awful," said Rangers starter C.J. Wilson.
Sale (4-2) struck out seven on just 98 pitches for his first career shutout and third consecutive win. Sale's one-hitter is Chicago's first since Zach Stewart had one on Sept. 5, 2011, at Minnesota.
"I knew warming up in the bullpen I felt loose. My arm felt good tonight," Sale said. "Warming up in the bullpen I felt like I was creating some good stuff and just wanted to transfer that out to the field, and it ended up working out tonight."
Alexei Ramirez's two-run, two-out single in the bottom of the seventh drove in Tyler Flowers and Tyler Greene to give Sale the lead and chase Wilson. Alex Rios then doubled off reliever Michael Kohn to drive in Ramirez, who had three hits and scored a run.
"C.J. obviously wasn't laying anything in there. That last slider, I know he was trying to have some bite on it but it just stayed middle in, it wasn't awful, but give Ramirez credit. It was a key at-bat and he hit the ball hard," said Angels manager Mike Scioscia.
Chris Iannetta reached base on Ramirez's throwing error in the ninth for Los Angeles, which had two base runners.
Sale took advantage of an aggressive approach by the Angels' hitters.
"It does (play into our hands) if they hit it at people and swing and miss. We took notice of that basically the first inning and it was pretty much when they started doing that, especially the second and third. It's a great day to have your change-up feeling pretty good when that team's going to try to be that aggressive," said catcher Tyler Flowers.
Wilson (3-2) gave up three runs and six hits while striking out three and walking four in 6 2-3 innings. He lost his second straight decision after losing to Houston on Tuesday.
"It was a really well pitched game. Sale just had video game stuff tonight. He's got electric stuff, four pitches and they're all nasty. He was 100 percent on tonight. So it was a rough matchup for us," said Wilson.
After doubling with two outs in the bottom of the second, Casper Wells was thrown out by Josh Hamilton at home plate on a single by Flowers to end the inning. It was the second game in a row Hamilton threw out a runner at home, after he got Ramirez on Saturday.
The White Sox threatened in the fourth after Wilson walked Paul Konerko and Dayan Viciedo, but didn't score. With one out, Mark Trumbo made a diving catch on Jeff Keppinger's liner to left, and then Wells flew out to right to end the inning.
Chicago also had a scoring chance in the sixth as Ramirez led off with a single and stole second and third, but was stranded on third when Keppinger flew to left.
- Angels manager Mike Scioscia said there's no timetable for starting pitcher Tommy Hanson's return. Hanson was placed on the restricted list on Friday.
- White Sox manager Robin Ventura gave DH/1B Adam Dunn "a day off." Dunn is hitting .137 overall, including .105 against left-handers.
- Angels shortstop Erick Aybar missed his third straight game with a tight right hamstring suffered Thursday against Houston. Scioscia said Aybar might be available Monday.
- White Sox LHP John Danks threw 101 pitches over six innings in a rehab start for Triple-A Charlotte. Danks will make another rehab start May 18 at Triple-A before the White Sox will determine whether to bring him back. Danks hasn't pitched this season after being placed on the disabled list last May 25.
- On Monday, the White Sox's Hector Santiago (1-1, 1.69) will face the Twins' Pedro Hernandez (1-0, 5.96) in Minneapolis, while the Angels' Joe Blanton (0-6, 5.66) is scheduled to pitch against Kansas City's Luis Mendoza (0-2, 6.38).