Sean O’Sullivan (2-2) retired his first 13 batters before running into trouble, but pitched into the seventh to give Kansas City its eighth win in 12 games, and knock the Yankees out of first place in the AL East for the first time since April 13.
New York lost for the sixth time in nine games and slipped a game behind Tampa Bay just as the archrival Red Sox prepared to come to town for three games.
The Yankees’ Robinson Cano homered a day after he was hit in the head with a pitch, and Alex Rodriguez homered for the first time in 65 at-bats.
The Royals’ 16 hits were a season high. Ten of them came off Ivan Nova (3-3), who had the shortest start of his career.
Nova gave up Hosmer’s second career homer a night after the promising rookie helped Kansas City snap a seven-game road losing streak with his first long ball in a 4-3, 11-inning win.
Cardinals 9, Cubs 1 — Unbeaten Jaime Garcia pitched seven effective innings and Matt Holliday homered to start an early outburst that sent St. Louis over host Chicago.
Garcia (5-0), who carried a perfect game into the eighth in his previous start against Milwaukee, allowed one run and nine hits. He complemented his 84-pitch outing on an 84-degree day at Wrigley Field by hitting an RBI single.
Giants 3, Diamondbacks 2 — Matt Cain had his best outing in nearly a month, right fielder Nate Schierholtz added three hits and played outstanding defense, and San Francisco beat Arizona to complete a perfect homestand.
Eli Whiteside doubled twice to help the Giants go 6-0 at home. They swept Colorado and then Arizona to extend their season-high winning streak to six games.
Mets 9, Rockies 5 — Carlos Beltran hit a career-high three homers and drove in six runs to help New York beat scuffling Ubaldo Jimenez and host Colorado in a game delayed more than two hours by rain.
Beltran homered from both sides of the plate and reached all parts of the ballpark with his three two-run homers: straightaway center in the first, deep left in the seventh, and into the right-field seats in the ninth.
Braves 6, Nationals 5 — Martin Prado hit a tying grand slam in the seventh inning, then scored the winning run on Brian McCann’s single to right field in the 10th, lifting host Atlanta over Washington.
Doug Slaten (0-1) walked Prado to open the 10th, and Prado advanced to second on Nate McLouth’s sacrifice bunt. Slaten intentionally walked Chipper Jones — who hit his fourth homer in the third inning — and McCann delivered the winning hit.
Orioles 2, Mariners 1 — J.J. Hardy singled in two runs in the 12th inning and Baltimore rallied to beat visiting Seattle for a three-game sweep.
Rays 7, Indians 4 — James Shields (4-1) pitched seven strong innings to finally beat Cleveland, and Tampa Bay did some more road repair with a victory over Justin Masterson.
The Los Angeles Dodgers’ game against the Pittsburgh Pirates was postponed after a lengthy rain delay in the top of the third inning.
No makeup date was immediately announced. The Dodgers are not scheduled to play in Pittsburgh again during the regular season.