Pettibone (2-0) allowed one run and five hits in 6 1-3 innings in his third start filling in for injured lefty John Lannan.
Donovan Solano hit a solo homer for the Marlins, who've lost three in a row after winning three straight.
Ricky Nolasco (2-3) gave up four runs and eight hits in six innings.
The Phillies are 9-2 combined against the Marlins (8-22) and New York Mets (11-15), but 5-14 against other teams. They're 9-3 when Pettibone, Lannan or Kyle Kendrick start and 5-13 when aces Cole Hamels, Roy Halladay and Cliff Lee take the mound.
Pettibone left after allowing a one-out single in the seventh. Antonio Bastardo entered and walked two batters to load the bases. Bastardo then struck out pinch-hitter Austin Kearns swinging at a 3-2 pitch out of the strike zone and fanned pinch-hitter Matt Diaz looking.
Mike Adams worked the eighth and Jonathan Papelbon finished for his fifth save in five tries.
Howard led off the bottom of the second by lining one out to right for his fifth homer and second in two nights. Two outs later, Carlos Ruiz singled and stole second base. He scored on Ben Revere's single to right for a 2-0 lead.
Utley connected in the third, putting a short, compact swing on a low fastball and driving it out to right for his sixth homer to make it 3-0.
One batter later, Howard ripped a ball into the right-field corner but was thrown out on a headfirst slide trying to stretch the double into a triple. The slow-footed slugger hasn't hit a triple since April 22, 2011.
Solano hit his first homer of the season out to left-center leading off the fourth to cut it to 3-1.
Brown drove a shot off the right-field foul pole for a 4-1 lead in the bottom half. Brown has homered on consecutive nights and has five this season.
Philadelphia's Delmon Young, playing just his second game in right field since 2007, made a leaping catch in front of the fence on Justin Ruggiano's drive in the second.