Updated

Royals manager Ned Yost made the right call giving Billy Butler the start at first base on Sunday, as Kansas City's only All-Star last year hit a grand slam and tied a franchise record with seven RBI in a 9-8 win over the Philadelphia Phillies at Citizens Bank Park.

Alex Gordon went 3-for-4 with three runs scored and an RBI for the Royals, who took the rubber match of the three-game series after blowing a 3-1 lead in the ninth on Saturday.

They nearly squandered a five-run advantage in the ninth inning Sunday, but Kelvin Herrera struck out Erik Kratz with the tying run on third and the winning run on second to close out the victory.

James Shields (1-1) shook off a rough start and lasted six frames, allowing four runs on 10 hits while striking out eight to earn the win.

"We played exceptional baseball here against an extremely tough team," Yost said. "I'm pleased with the way we came out of the series winning two out of the three."

Cole Hamels (0-2) was roughed up for a second straight time, surrendering a career-high eight earned runs on nine hits and four walks. The left-hander was pulled with two outs in the sixth after tossing just five innings in an Opening Day loss to the Braves.

Yost gave Butler the starting nod at first base over Eric Hosmer, and the decision helped the Royals enter the last inning with a healthy 9-4 cushion.

The manager was again put to the test in the ninth after Jimmy Rollins pulled the Phillies within 9-7 with a three-run homer off J.C. Gutierrez. Yost switched to closer Greg Holland, who blew a save chance in the middle game of the set and yielded a pair of two-out singles before being replaced by Herrera.

Laynce Nix made it a one-run affair with a pinch-hit, run-scoring single that left runners on first and second, and a wild pitch moved both runners up a base. Herrera was in a long duel with Kratz before throwing a changeup Kratz swung through to record his fourth career save.

The Phillies, who dropped two of three in Atlanta as well, pushed across four runs in the first inning as Chase Utley, Michael Young and Domonic Brown each had RBI singles while Kratz added a sacrifice fly.

"We didn't tack on runs in the middle innings," said Young. "We have to keep our foot on the gas as the game goes on."

The Royals cut their deficit in half in the third, as Chris Getz reached on a bunt single, advance to second when Gordon worked a one-out walk and scored on Alcides Escobar's double to right field.

Butler, usually penciled in as Kansas City's designated hitter, added an RBI groundout for a 4-2 game before coming up with the bases loaded in the fifth.

Getz led off with a double, Gordon reached on an infield single and Escobar walked in front of Butler, who launched one deep to left for what was at first ruled a bases-clearing double. But after a quick replay, the play was deemed a grand slam after it showed the ball clearing the wall and hitting a railing behind it.

Butler came up again with the bags full in the sixth, and his single brought in Shields and Gordon to tie the club record and set a career-high with seven RBI.

Gordon made it 9-4 in the eighth when he knocked in Jarrod Dyson with a base hit -- a run that proved big after the Phillies rallied in the ninth.

Game Notes

The grand slam was the first of Butler's career ... The Royals have not committed an error yet this year -- the longest streak in club history to begin a season ... Hamels had a seven-game unbeaten streak at home snapped ... Young had four of the Phillies' 15 hits ... The Royals will play their home opener Monday against the Twins ... The Phillies start a three-game home series against the Mets on Monday.