With Tampa Bay trailing, 3-0, in the fourth, Sean Rodriguez had an RBI double before Shoppach hit his slam to make it 5-3. Shoppach’s solo shot in the eighth was just his third extra-base hit since June 30.
Andy Sonnanstine (3-1) gave up three runs and three hits over five innings.
Adam Jones hit a three-run homer for the Orioles.
Brian Matusz (4-12) became the AL’s second 12-game loser along with teammate Kevin Millwood. Matusz gave up five runs and nine hits in four innings.
The Rays won for the third time in the last 10 games.
Yankees 8, Royals 3 — Alex Rodriguez hit three home runs in a game for the fourth time in his career, leading New York past host Kansas City.
Rodriguez drove in five runs, taking over the major league RBIs lead with 97. He picked on three pitchers for his deep drives, which all traveled more than 400 feet in the hot, humid Midwestern air.
Rodriguez homered in the sixth inning, added a two-run shot in the seventh, and hit a two-run drive in the ninth that landed in the water fountains in left field.
Cubs 3, Cardinals 2 — Carlos Zambrano won for the first time since his banishment for a dugout tantrum in June as visiting Chicago won for just the third time in 17 games.
Zambrano (4-6) gave up seven hits in 5 2/3 innings, struck out three, and walked two.
The Cardinals dropped into a tie for the NL Central lead with the Reds.
Giants 3, Padres 2 — At San Francisco, Juan Uribe hit an RBI single in the 11th inning as the Giants rallied for a rare win against San Diego.
The Giants won for just the second time in 10 meetings against their NL West rivals and moved within 2 1/2 games of San Diego for first place.
Reds 5, Marlins 4 — Mike Leake snapped his three-start losing streak and drove in a run, Drew Stubbs homered, and host Cincinnati moved back into a tie for the NL Central lead with the Cardinals.
Angels 7, Blue Jays 2 — Bobby Wilson had his first two-homer game in the major leagues and drove in a career-high five runs to lift host Los Angeles.
Astros 3, Pirates 2 — Bud Norris had a career-high 14 strikeouts and Hunter Pence homered and drove in the tiebreaking run, leading host Houston over Pittsburgh.
Phillies 4, Mets 0 — Philadelphia took advantage of some shoddy defense to scratch out its first runs at Citi Field this season, and Roy Halladay (15-8) made the meager offense look insurmountable in a victory over New York.
Diamondbacks 9, Nationals 2 — Miguel Montero hit two of Arizona’s four home runs and Ian Kennedy pitched seven strong innings and singled twice as Arizona beat host Washington.
Twins 2, Athletics 0 — Brian Duensing pitched a three-hitter for his first career complete game, outdueling Trevor Cahill for host Minnesota.
Tigers 3, White Sox 2 — Alex Avila hit a two-run homer in the ninth inning off substitute closer J.J. Putz, as Bobby Jenks sat out with back spasms, lifting Detroit in Chicago.
Mariners 9, Indians 3 — Josh Bard hit his first career grand slam and added a double and two singles, leading Seattle over host Cleveland.
Dodgers 2, Braves 1 — Ted Lilly threw six scoreless innings for his third straight win as visiting Los Angeles beat Atlanta.
Brewers 5, Rockies 4 — Casey McGehee hit an RBI single in the 10th inning to lift visiting Milwaukee.