The Marlins ended a three-game losing streak and inched within six games of Philadelphia for the lead in the National League East.
Nolasco (8-7) allowed all four Philadelphia hits, one of them a two-run homer by Ben Francisco in the seventh.
Renyel Pinto escaped trouble in the eighth after walking two batters, and Leo Nunez worked a perfect ninth for his 10th save.
Nick Johnson hit a home run as the second batter of the game, and Dan Uggla added an RBI double later in the first inning.
Cody Ross gave Florida a 3-0 lead by leading off the second with his 19th homer of the year.
The loss went to Joe Blanton (7-6), who surrendered three runs on eight hits over 6 2/3 innings.
Copyright 2009 by United Press International.