PHILADELPHIA -- Even on a soggy night, Roy Halladay made it look easy.
Halladay pitched eight strong innings in his home debut, Chase Utley hit his fifth homer in four games and the Philadelphia Phillies held on for an 8-6 victory over the Florida Marlins on Friday night.
Pitching in a steady rain, Halladay (3-0) shrugged off the conditions and allowed two runs and eight hits. He threw 100 pitches, struck out four and didn't walk a batter.
"I think you go out and do the same things," Halladay said. "There's not a lot you can do to change anything. My approach is the same."
Florida took advantage of three infield hits to score four runs off David Herndon in the ninth before Ryan Madson got the last two outs for his third save in three tries. Madson retired Cantu on a fielder's choice grounder with two runners on to end it.
Acquired from Toronto in a blockbuster deal last December, Halladay tossed a seven-hit shutout against Houston last Sunday. The former AL Cy Young winner has a 1.13 ERA in three starts.
"He pitches ahead, throws strikes with command and is in control of his emotions," Marlins manager Fredi Gonzalez said. "He's really good."
Utley has connected in four straight games and has six homers this season. Placido Polanco also went deep for Philadelphia.
Marlins starter Anibal Sanchez (0-1) struggled through six innings, allowing one run and eight hits.
A crowd of 45,245 -- the 46th consecutive sellout at Citizens Bank Park -- turned out on a dreary night, mostly to watch Halladay pitch his first game in red pinstripes. Many were forced to stand on the concourse because of the driving rain.
Though the game was never stopped, there were a couple long delays between innings while the grounds crew worked on the field.
If it weren't for the rain, Phillies manager Charlie Manuel said he would've sent Halladay out for the ninth.
"He does a tremendous job and he has a knack for closing out innings with a short amount of pitches," Manuel said.
Halladay, who has 50 career complete games, didn't protest much when Manuel pulled him.
"I go out until they tell me I'm done," he said. "You can't finish them all."
The two-time defending NL champion Phillies are off to an 8-2 start.
Wildness cost Sanchez in the first inning. Shane Victorino and Utley reached on walks before Ryan Howard beat the shift with an opposite-field single that drove in the first run. After Raul Ibanez walked to load the bases, Juan Castro and Carlos Ruiz hit consecutive RBI singles to make it 3-0.
Polanco hit a drive off the left-field foul pole for a 4-0 lead in the second. Castro's sacrifice fly in the third made it 5-0. Utley drove one out to right in the seventh off left-hander Dan Meyer.
Both teams made excellent defensive plays in the outfield. Ibanez robbed John Baker of extra bases with a diving grab in left to start the sixth.
In the bottom half, Marlins Cameron Maybin made a diving catch on the warning track in right-center.
Phillies RHP Joe Blanton is scheduled to make his first rehab start on Tuesday. Blanton has been sidelined with an oblique injury. ... The Marlins outrighted RHP Jose Veras to Triple-A New Orleans. He was designated for assignment on Wednesday. ... Marlins RHP Brian Sanches, who has an injured hamstring, will make a rehab appearance at Class A Jupiter on Monday. ... The Phillies are averaging 7.7 runs per game. ... The Marlins had won nine of their last 11 games in Philadelphia. ... Halladay, an .079 career hitter coming in, has one hit in each start. ... Cantu has a 15-game hitting streak, dating to last season.