The Phillies fell three games behind the NL East-leading New York Mets, who were idle Wednesday.
The Phillies also dropped four games behind Milwaukee in the wild-card race. The Phillies hopes for a second straight playoff appearance could get a boost - or be thwarted - when they open a four-game series with the Brewers on Thursday at Citizens Bank Park.
Ryan Howard hit his major league-leading 42nd homer for the Phillies.
Nolasco (14-7) struck out Howard, Pat Burrell and Shane Victorino in the fourth, and even had an RBI single. He hasn't allowed more than three runs in any of his last nine starts and is 4-1 over that span.
Brett Myers (9-11) had another solid outing - nine strikeouts, four runs in 7 1-3 innings - but lost for only the second time in 10 starts since he was recalled from the minor leagues on July 20.
Myers went from opening day ace to the minor leagues and back to arguably their second-half MVP as the defending NL East champs make another late-season playoff push. He retired 10 straight until Gonzalez touched him with a leadoff single in the eighth and the game tied at 3.
After another single put runners on the corners, manager Charlie Manuel saw enough of his tiring right-hander.
Willingham ripped a ground-rule double down the third-base line for a 4-3 lead. The ball was touched by a fan, likely preventing pinch-runner Robert Andino from scoring. After an intentional walk, Chad Durbin retired Paul Lo Duca on a double play to end the inning.
The Marlins scored three more times in the ninth to put the game away. The Phillies didn't have a hit after the fifth inning.
Nolasco struck out the side in the fourth and was staked to a 3-1 lead when he ran into trouble. Chris Coste had an RBI double to center that made it 3-2. Coste, though, was stuck on third after a sacrifice bunt and Jimmy Rollins popped up. Jayson Werth, who has been sensational as a starter, poked an RBI single to left that tied the score.
Myers gave the bullpen a breather a day after six pitchers combined to go 7 1-3 innings in a 10-8 loss. He started strong, striking out four of five batters he faced in one span, then allowed a two-run shot to Gonzalez in the third. Gonzalez's eighth homer of the year gave the Marlins a 2-1 lead.
Myers allowed Dallas McPherson's leadoff double in the fourth and the Marlins third baseman scored on Nolasco's RBI single to left for a 3-1 lead.
Howard put the Phillies ahead 1-0 in the second when his 42nd homer of the season smacked off the scoreboard in left.
Notes: The Phillies will start LHP Jamie Moyer (13-7, 3.64 ERA) on three days rest against Milwaukee on Thursday. Moyer pitched seven scoreless innings Sunday against the Mets in the first game of a doubleheader. ... The Phillies activated OF Geoff Jenkins from the 15-day disabled list. Jenkins was out for 2½ weeks with a strained right hip flexor. ... Phillies INF Andy Tracy is out for the rest of the season with a broken hand. Tracy, a utility infielder with only two at-bats this season, was hit on the left hand by a line drive during batting practice.