Beckett (6-6) went six innings for the Red Sox, who were eliminated from postseason contention on Tuesday. He gave up four runs on 11 hits, struck out five and walked four.
Garcia (12-6) lasted into the eighth and gave up two earned runs and four hits. Garcia threw to two batters in the eight. He gave up four hits, walked none and struck out one.
The right-hander was making his 28th start of the season and second since being sidelined with lower back stiffness on Sept. 7.
Matt Thornton got the last four outs for his eighth save in 10 chances.
In the bottom of the fourth, A.J. Pierzynski tied it at 1 with a solo homer.
J.D. Drew's bid for a go-ahead homer in the sixth was caught at the right-field wall by Alejandro De Aza.
Boston's Mike Lowell got one run back when he led off the eighth with his fourth home run of the year.
Chicago answered with a run on Juan Pierre's double-play grounder.
NOTES: Beckett had won two of his last three starts entering Wednesday, including a 10-8 decision at the Yankees on Sept. 24. ... White Sox RF Carlos Quentin robbed leadoff batter Marco Scutaro of an extra base hit to open the game. Scutaro lined Freddy Garcia's fourth pitch into right-center, but Quentin timed a perfect dive to make the catch. ... In the second inning, Ortiz tried to catch the White Sox in their shift and laid down a bunt, but he was thrown out.
(This version CORRECTS White Sox 5, Red Sox 2. Corrects to Garcia's second start since returning)