PHILADELPHIA (AP) -- A few of the Florida Marlins were watching television before the game when a broadcaster said they were too young and inexperienced to stay in contention.
Nothing these Marlins do anymore should be a surprise.
Luis Gonzalez hit a go-ahead two-run homer and Cody Ross and Jorge Cantu also went deep for the upstart Marlins, who moved back into first place in the NL East -- a half-game ahead of the Phillies. Florida leads the division despite a major league-low payroll of $22 million on opening day.
"Nolasco was the player of the game," Marlins manager Fredi Gonzalez said. "To get that deep in the game against a team like that was big."
Chase Utley hit his major league-leading 19th homer for Philadelphia. Utley also leads the NL with 49 RBIs.
Nolasco (5-3) allowed two runs and four hits to win his fourth straight decision. The right-hander held in check a potent lineup that scored 60 runs in the previous five games.
"I just pitched to my strength," Nolasco said. "I had a lot of things working, a good curve to left-handed hitters and a good slider to right-handers."
Hamels (5-4) lasted 5 2/3 innings, allowing seven runs and eight hits. The All-Star left-hander was coming off one of the poorest outings of his career. He gave up six runs in four innings in Philadelphia's 15-6 win at Houston last Sunday. Hamels' ERA rose to 3.73 from 2.61 a week ago.
"He was having a hard time establishing his breaking ball, his command was off and he threw a lot of high fastballs," Phillies manager Charlie Manuel said.
The Marlins pushed across four runs in the fourth to take a 4-2 lead. Hanley Ramirez led off with a double. After Jeremy Hermida singled and Cantu flied out to shallow right, Wes Helms hit a two-run double to left-center to tie it at 2.
Helms, who struggled with the Phillies last year after signing a free-agent contract, was booed each time he came up.
Gonzalez connected with two outs to make it 4-2. It was his 350th career homer. Hamels wasn't pleased he didn't get a call on a 2-2 pitch to Helms. He let plate umpire Bruce Dreckman hear it after Gonzalez hit a 3-2 pitch into the right-field seats.
"I'm more disappointed in letting the team down," Hamels said. "We just started playing well and I let them down."
Cantu hit a leadoff drive in the sixth and Ross chased Hamels with a two-run shot to left for a 7-2 lead.
Ross had nine homers in his last 10 hits, before hitting a single in the ninth. Ten of his 21 hits are homers. Mark McGwire was the last player to have a similar streak. He had 11 straight hits for homers in 2001.
"It felt kind of strange to hit a single," Ross said.
A crowd of 45,261 was the sixth largest in the five-year history of Citizens Bank Park. It was the 12th sellout this season. ... Victorino has a 12-game hitting streak. ... Ramirez was in the lineup a night after a bruised thumb forced him to leave the game early. ... The seven runs off Hamels tied for the most he's allowed. He gave up seven twice his rookie year in 2006. ... The left-handed hitting Utley has 10 homers against left-handers, tops in the majors. ... Phillies C Carlos Ruiz left the game with a bruised left hand after getting hit by a pitch. X-rays were negative. ... Gonzalez is tied with Chili Davis for 77th on the career list in homers.