Mark Teixeira, Curtis Granderson, and Swisher all homered off Halladay.
The Yankees, who are tied with Tampa Bay for the AL East lead, won their ninth straight home game — their best streak in the second-year ballpark.
Sabathia (7-3) went seven innings, allowing five hits and striking out seven.
Making his third start since his perfect game at Florida May 29, Halladay (8-5) matched a career high by serving up three homers — the amount he allowed in his first 13 outings with Philadelphia.
Mets 7, Indians 6 — Johan Santana won for the first time in four starts and New York rallied to beat host Cleveland.
Santana (5-3) gave up four runs and seven hits over seven innings as the Mets won their fifth straight and ninth of 10.
Francisco Rodriguez worked the ninth for his 14th save in 17 chances despite yielding a two-out, two-run pinch homer to Shelley Duncan.
Tigers 7, Nationals 4 — Ryan Raburn hit his first homer of the season and drove in four runs, leading host Detroit over Washington.
Max Scherzer (3-6) struck out nine in six innings. He allowed three earned runs and seven hits for the win.
Rangers 3, Marlins 2 — Matt Treanor’s pinch-hit, two-run triple in the ninth inning lifted Texas over host Florida for a sixth win in seven games.
Neftali Feliz pitched a scoreless ninth for his 16th save in 18 opportunities.
Dodgers 12, Reds 0 — Manny Ramirez homered and drove in four runs and Rafael Furcal tied his career high with five hits to help Los Angeles snap a three-game losing streak with a road win over Cincinnati.
Rays 10, Braves 4 — David Price pitched out of trouble to become the AL’s first 10-game winner, Evan Longoria hit a two-run homer, and Tampa Bay posted a road win over Atlanta, after a rain delay of nearly 2 1/2 hours at the start.
White Sox 6, Pirates 4 — Gordon Beckham drove in three runs and Chicago spoiled former first-round draft pick Brad Lincoln’s first start at home, beating Pittsburgh to extend the last-place Pirates’ losing streak to nine.
Twins 9, Rockies 3 — Carl Pavano allowed two runs on five hits in seven innings and Jason Kubel homered to lead host Minnesota over Colorado.
Pavano (7-6) struck out five and walked one, going at least seven innings for the 10th time in 13 starts this year.
Cardinals 4, Mariners 2 — Jeff Suppan was a success in his comeback start with St. Louis and Albert Pujols homered a day after getting bopped in the head by a throw as the hosts beat Seattle.
Pujols is 6 for 10 with five RBIs in three games, snapping a 1-for-18 skid that dropped him below .300.
Royals 15, Astros 7 — Yuniesky Betancourt’s bases-loaded double keyed a seven-run, two-out rally in the fifth inning carrying Kansas City to a home victory over Houston.
Athletics 9, Cubs 5 — Rajai Davis and Kevin Kouzmanoff had three hits apiece, and Oakland took advantage of four errors for a road victory over Chicago that had a rain delay of 1 hour 41 minutes.
Padres 8, Blue Jays 2 — Aaron Cunningham hit his first career grand slam and Mat Latos (7-4) outpitched Brett Cecil to carry host San Diego over Toronto.
Brewers 7, Angels 1 — Dave Bush took a shutout into the eighth inning, Prince Fielder homered, and Corey Hart hit a three-run double to lead visiting Milwaukee over Los Angeles.
Orioles 4, Giants 1 — Jake Arrieta gave up three hits over seven-plus innings, Adam Jones hit a homer, and visiting Baltimore ended a four-game losing streak, by beating San Francisco.