Updated

At his locker stall, Kolten Wong basked in the afterglow of the grand slam that busted the St. Louis Cardinals' offensive slump. The rookie just kept smiling.

"It was awesome," Wong said after an 8-7 loss to the Kansas City Royals on Tuesday night. "I couldn't hold my excitement."

The clubhouse was otherwise pretty silent after the pitching fell short once again.

"Go a couple days without scoring runs, you can see it on his face," manager Mike Matheny said. "We needed that, it was a great spark.

"We can't complain about what the offense did today. It just wasn't enough."

Eric Hosmer hit a tiebreaking single off closer Trevor Rosenthal in the ninth inning to give the Royals their second straight road victory in the four-game, two-city series.

Wong's first career grand slam at any level in the second ended the Cardinals' 20-inning scoreless drought and gave them an early four-run cushion. Matheny gave Wong a hug and then sent him out for a curtain call.

But the defending National League champions finished a dismal 2-7 home stand when their pitchers faltered.

Alex Gordon's three-run homer capped a six-run fifth for the Royals, who batted around and hit for the cycle against Jaime Garcia and took a two-run lead.

"I just wasn't able to execute," Garcia said. "I've got to go out and do a better job than that."

No Cardinals relievers warmed up during the rally. Matheny said after the game that some members of the bullpen had been unavailable.

"I'm on the mound, I'm trying to execute pitches until the manager takes the ball out of my hand," Garcia said. "I'm not looking anywhere else."

Kansas City starter James Shields also scuffled, surrendering five earned runs in 5 1-3 innings, and has given up seven homers his last three starts. Shields helped himself with two hits, including an RBI double.

Peter Bourjos' 422-foot homer put the Cardinals ahead 7-6 in the sixth. Alcides Escobar's bloop RBI single off Pat Neshek tied it in the eighth, a rally fueled by pinch hitter Billy Butler's infield hit.

Wong jammed his shoulder making a diving stop at second base on Butler's hit and thought he might miss one game.

Omar Infante doubled off Rosenthal (0-3) with one out in the ninth ahead of Hosmer's hit.

Greg Holland worked the ninth for his 16th save in 17 chances for the Royals, the home team for the last two games of intrastate interleague series that resumes Wednesday.

Wade Davis (5-1) pitched the eighth and got the win.

Jhonny Peralta added two doubles and an RBI for St. Louis, outscored 14-0 the previous two games by the Royals and Giants.

Wong was chosen as the NL rookie of the month earlier Tuesday and his slam in the second was the Cardinals' fifth hit in 10 at-bats against Shields.

St. Louis loaded the bases in the first, too, but Yadier Molina grounded into an inning-ending double play on good glovework by Escobar at shortstop and capped by Infante's barehanded grab on the move at second and relay.

The Royals had one runner in scoring position the first four innings, then batted around and hit for the cycle in the sixth to take the lead. Gordon homered for the second straight day, Escobar had an RBI triple and Shields had an RBI double with his second straight hit.

NOTES: Cardinals RHP Adam Wainwright (8-3, 2.32) opposes Jason Vargas (5-2, 3.39) on Wednesday night. Wainwright is 4-1 against the Royals and 9-5 overall in interleague play. Vargas has at least six strikeouts his last five starts, the longest such stretch of his career. ... Shields is the first Royals pitcher to get an RBI since Luis Mendoza May 29, 2013, at St. Louis. ... The Royals' six-run inning tied their season best and the best against the Cardinals. ... Matt Holliday walked twice and has reached safely the first 30 home games. ... The Royals have played six games with new batting coach Dale Sveum, and have scored six or more runs in four of them.