The Marlins had been 0-40 when trailing after eight innings.
"I’m just happy to see everybody not panicking when we don’t need to," Prado said. "We just played it out, all the way — like 27 outs, you never know what’s going to happen."
All-Star Jose Fernandez tied a career-high with 14 strikeouts and hit 100 mph in the first inning. He allowed two runs and four hits in 6 1/3 innings.
"I wasn’t at my best," he said. "Trying to throw first-pitch strikes today. Wasn’t too good."
Prado hit his third homer of the season off Brett Oberholtzer (2-2). Kyle Barraclough (6-2) pitched one inning for the win. A.J. Ramos finished for his 30th save in 31 tries, retiring Maikel Franco on a fly ball to the warning track in left-center to end the game.
"Even in game that basically we got handcuffed most of the night, our pitching kept us there," Marlins manager Don Mattingly said.
Cody Asche prevented the Marlins from taking a lead in the 10th when he made a diving catch to rob J.T. Realmuto of a run-scoring hit with two outs and runners on first and second.
Philadelphia’s Aaron Nola pitched two-hit ball over six innings, striking out five. He got the final two outs in the sixth after Adeiny Hechavarria ripped a line drive off his right shoulder. Nola said he’s fine.
"Good news was Nola," manager Pete Mackanin said. "He pitched really well. He was painting the corners. It was very encouraging."
After Edubray Ramos worked the seventh and Hector Neris pitched the eighth, Gomez blew his third save in 28 chances.
Tommy Joseph hit Fernandez’s first pitch in the seventh out to left for his 12th homer. Odubel Herrera hit a double to start the bottom of the first and later scored on Franco’s groundout to second.
Fernandez became the fastest player to reach 500 strikeouts. He did it in 400 innings. Fernandez has fanned 14 four times in his career, including June 5 against the Mets. … Phillies 2B Cesar Hernandez went 0 for 3, extending his hitless streak to 19 at-bats. … Phillies were 36-2 when leading after eight innings.
The Marlins (50-42) entered tied with the Mets for the second wild-card spot in the NL. The Phillies (43-51) fell to eight games behind Miami.
Armando Benitez was the last Marlins pitcher with 30 more save through 92 games. Benitez had 31 at the same point in 2004. He set the franchise record that season with 47 saves.
REST PAID OFF
Nola was 0-4 with a 13.50 ERA in his last five starts before the All-Star break. The Phillies skipped his last turn so he had 15 days off between starts.
Phillies: OF Aaron Altherr had his rehab assignment transferred to Single-A Clearwater. Altherr tore a tendon in his left wrist in March. He batted .241 in 39 games last season, but 20 of is 33 hits were extra-base hits.
RHP Vince Velasquez (8-2, 3.32 ERA) starts for the Phillies on Tuesday night. RHP Jose Urena (1-1, 7.52) will makes his first start this season for Miami.