Jason Bartlett's infield single in a two-run second inning was enough to beat Tavarez (1-3), who struck out seven while allowing four hits, two runs and three walks in six innings.
The only score against Santana (4-2) came on a bloop double by Dustin Pedroia that hit the white line with two outs in the fourth and drove in Wily Mo Pena.
Though Santana lasted at least five innings for the 98th consecutive start, that's all he went after throwing 98 pitches. He surrendered seven hits and two walks while striking out five.
ANAHEIM, Calif. - Jon Garland won for the first time this season and Chicago ended a five-game losing streak.
Garland (1-2), an 18-game winner in each of the past two seasons, gave up three runs and eight hits over seven-plus innings. Bobby Jenks, the fourth Chicago pitcher, worked a perfect ninth for his ninth save in 10 attempts.
After squandering an early 3-0 lead, the White Sox went ahead in the sixth against John Lackey (4-3). A.J. Pierzynski doubled just inside the left-field line and Joe Crede's two-out single made it 4-3.
ARLINGTON, Texas - Michael Young homered and had five RBIs, including a two-run double that keyed a six-run third inning off Toronto ace Roy Halladay, and Texas extended Toronto's losing streak to five games.
Halladay (4-1), who pitched a five-hitter against Texas on Monday, gave up nine runs and 12 hits in 5 1-3 innings. He struck out three and walked two.
Rangers starter Vicente Padilla (1-4) allowed two runs and six hits in seven innings to win for the first time since last Sept. 23 over Cleveland.
KANSAS CITY, Mo. - Craig Monroe hit a tiebreaking two-run single in the eighth inning to lift Detroit to its sixth straight victory.
Magglio Ordonez, who homered in the sixth for Detroit, doubled home the tying run off Joaquim Soria in the eighth.
Jose Mesa (1-1), the fourth Tigers pitcher, got one out for the win and Todd Jones pitched the ninth for his 12th save in 14 opportunities.
Mike Sweeney, Jason LaRue and Esteban German all homered for the Royals.
BALTIMORE - Daniel Cabrera pitched seven innings of three-hit ball and Ramon Hernandez homered and drove in four runs for Baltimore.
Hernandez hit a three-run homer in the first inning and added a sacrifice fly in a three-run second. Jay Payton had three hits, two RBIs and scored twice for the Orioles, who had gone 16 games without scoring more than seven runs.
Cabrera (2-3) gave up one run, struck out six and walked four in his sharpest performance of the season.
ST. PETERSBURG, Fla. - Brendan Harris hit a game-winning RBI single in the 12th inning and Ty Wigginton hit two solo homers to lead Tampa Bay.
Ben Zobrist, who was in a 1-for-25 slump, had a one-out infield single off Jay Marshall (1-2) in the 12th. He went to second on a wild pitch and scored on Harris' two-out hit down the right-field line.
Ruddy Lugo (2-0) worked out of a two-on, two-out jam in the 12th for the win.