PHILADELPHIA -- Billy Butler's big day almost became another lost day for the Kansas City Royals.
The Royals' 9-8 victory over the Philadelphia Phillies on Sunday afternoon wasn't secure until Phillies catcher Erik Kratz swung through a 1-2 change-up from reliever Kelvin Herrera with runners at second and third in the bottom of the ninth, ending a nine-pitch at-bat.
Herrera, who earned his first save, prevented the Phils from staging their second straight dramatic comeback. On Saturday, pinch hitter Kevin Frandsen's three-run double in the bottom of the ninth gave the Phils a 4-3 victory.
On Sunday, Philadelphia (2-4) scored four times in the last of the ninth, cutting a 9-4 deficit to 9-8.
"It was a little rough on the manager," Royals boss Ned Yost said of the final frame.
"Kratz had a good at-bat," Phillies manager Charlie Manuel said. "He was hitting off a guy who was throwing 97 (mph), throwing the kitchen sink."
Butler, who went 2-for-4, hit his first career grand slam and drove in a career-high seven runs in staking the Royals (3-3) to that big lead. His RBI total equaled a franchise record, as the Royals rallied from a 4-0 deficit for the second time in three days to win the rubber game in the three-game weekend series.
Philadelphia had 15 hits, including four by Michael Young, and Kansas City had 13, including three by Alex Gordon. And it was Jimmy Rollins' three-run homer off reliever J.C. Gutierrez that started Philadelphia's ninth-inning rally.
Greg Holland, who was victimized by Frandsen on Saturday, retired Chase Utley but allowed singles to Ryan Howard and Young before he was replaced by Herrera.
Pinch hitter Laynce Nix roped an RBI single to center, making it 9-8, and Herrera then wild-pitched two runners into scoring position before striking out Kratz.
James Shields (1-1) picked up his first victory as a Royal, battling through six innings despite giving up four runs in the first. He allowed 10 hits but didn't walk a batter, while striking out eight. Tim Collins worked two perfect innings in relief.
Phillies starter Cole Hamels (0-2), who had also been rocked on Opening Day in Atlanta, yielded nine hits and eight runs in 5 2/3 innings of work. He struck out two and walked four.
Hamels led 4-2 entering the fifth, but Chris Getz led off with a double, and one out later Gordon reached on an infield single, with Getz taking third. Alcides Escobar walked on four pitches, and Butler blasted a 1-0 pitch toward the left-field stands.
The ball eluded the leaping attempt of left fielder Domonic Brown, struck a barrier behind the fence and bounced back onto the playing surface, and at first appeared to be a three-run double. But after a replay review, the umpiring crew ruled that it was a home run, Butler's first of the season.
"I was just standing at second base and just happy to get the runs in," Butler said. "I saw it bounce back, and I didn't know."
Butler, who began the day hitting just .133, added a two-run single off reliever Chad Durbin in the sixth, after Hamels allowed two men to reach and Durbin walked Escobar to load the bases with two outs.
"It was just a matter of time with Billy Butler," Yost said. "You knew he was going to break out and do some damage."
Gordon singled home a run in the eighth, making it 9-4.
The Phillies staked Hamels to a 4-0 lead in the bottom of the first, when Utley, Young and Brown contributed RBI singles and Kratz tacked on a sacrifice fly.
"The first inning, I felt I made some very good pitches," Shields said. "They found some holes. ... It's my job to stop the bleeding and hold them at bay."
The Royals scored twice in the third, as Escobar and Butler drove in runs with a double and a groundout, respectively. And the Phillies in the meantime left runners in scoring position in the third, fourth, fifth and sixth.
"We had our chances early in the game and didn't knock guys in," Manuel said. "That's the way it goes sometimes."
NOTES: Butler became the 12th Royal to drive in seven runs in a game. ... The loss was Hamels' first in Citizens Bank Park since July 7, 2012. He had been 3-0 with a 2.72 ERA in his previous seven home starts. ... Collins had also retired all six hitters he faced in Friday's 13-4 victory over the Phils. ... Young went 4-for-5 and Ben Revere was 3-for-5 for Philadelphia, while Rollins and Utley had two hits apiece. ... Revere's stolen base in the fourth was the Phillies' seventh of the season in as many attempts. They began the day tied for the major league lead in steals.