The Phillies had just two hits and trailed 3-1 to start the inning. Holland (0-1) walked Chase Utley, Ryan Howard and Michael Young to load the bases. He then struck out Domonic Brown swinging and fanned John Mayberry Jr. looking.
But Frandsen ripped a first-pitch fastball to right-center to knock in all three runners. Young slid in safely well ahead of the throw and the dugout emptied as players mobbed Frandsen.
Royals starter Luis Mendoza threw six stellar innings, and the Royals' bullpen went into the ninth with seven hitless innings in the series.
Antonio Bastardo (1-0) pitched a scoreless ninth to earn the win. John Lannan was sharp in his Phillies debut. He allowed three runs and five hits, striking out five in seven innings.
Mendoza allowed one run and two hits, striking out seven.
The Phillies are 2-3 and were looking more like the team that went 81-81 last year after winning five straight NL East titles from 2007-11.
Then came the ninth-inning rally. There weren't many fans left to witness it, however.
A crowd of 39,475 at Citizens Bank Park was the first under 40,000 since April 29, 2009, when 36,351 came out for a game against Washington. The Phillies led the majors in attendance each of the last two seasons.
Lannan was cruising along with a no-hitter until the fifth. He hit Lorenzo Cain with a pitch to start the inning and Jeff Francoeur followed with a double down the left field line. Miguel Tejada drove in a run with a groundout to second base and Elliot Johnson singled in a run for a 2-0 lead.
Making just their third-ever trip to Philadelphia, the Royals will try to win the rare interleague series Sunday afternoon. They last played here in 2004.
The Phillies beat Kansas City to win the 1980 World Series and claim the franchise's first of two championships. They clinched the title with a victory in Game 6 at old Veterans Stadium.
Lannan retired the first nine batters he faced before Alex Gordon reached on second baseman Utley's fielding error in the fourth. Lannan spent his first six seasons with Washington. He was signed as a free agent by the Phillies not for his performance against them. Lannan was 3-13 with a 5.53 ERA against the Phillies. He entered the game 39-39 with a 3.80 ERA against the rest of the majors.
The Phillies cut it to 2-1 when Ben Revere lined an RBI single off third baseman Tejada's glove with two outs in the bottom half.
Francoeur led off the seventh with a double to right-center and Tejada followed with a double down the right-field line to make it 3-1.