Oswalt had one of his worst outings of the season in 5 2-3 subpar innings, and John Buck hit a grand slam for Florida as the struggling Marlins beat the Phillies 6-5.
"It was pretty much one bad pitch," Oswalt said, referring to Buck's homer. "(It was) a slider that didn't do what I wanted it to do."
Oswalt (6-8) matched his career high by allowing 12 hits, as every Marlins position player recorded at least one off the Philadelphia right-hander. He was lifted after giving up six runs - five earned - while striking out two and walking one in 5 2-3 innings.
Oswalt was loudly booed in the sixth in a way that was reminiscent of the days when the Phillies lost often at old Veterans Stadium.
Manager Charlie Manuel was cheered when he emerged from the dugout to lift Oswalt, but the pitcher was given encouraging cheers on his way back to the dugout.
"He made some good pitches but the guys jumped on it. I can't explain it," Florida manager Jack McKeon said. "The way we've been hitting we had a hell of a night because we haven't been hitting that well."
Oswalt missed 37 games this season with lower back inflammation, but didn't blame his back for not having the same zip on his fastball.
"It was a little down tonight but I don't worry about that," Oswalt said of his velocity. "I saw 91-92 (mph), there's no big difference. I'm good."
Said Manuel, "He had trouble getting ahead of hitters. He was crisp but had a hard time getting the ball inside."
Ryan Howard homered for the Phillies (83-46), who have lost two straight but still maintained a comfortable six-game lead over the Braves in the NL East with Atlanta's 6-0 loss to the New York Mets on Friday.
After Greg Dobbs, Gaby Sanchez and Mike Cameron led off the sixth with three straight singles, Buck hit an opposite-field grand slam that landed in the first row in right field for his 16th homer of the season to put Florida ahead 6-1.
"It feels good to be able to come through in a situation like that," Buck said. "Against the Phillies, bases loaded, Roy Oswalt, that's the kind of scenario you'll write in a fantasy book."
Clay Hensley (2-5) allowed three runs on three hits in 5 2-3 innings and Dobbs had four hits - including two doubles - to help Florida win for just the fourth time in 21 games and snap a five-game losing streak in Philadelphia.
"It wasn't anything (Oswalt) was doing, just kind of the work and preparation I've been doing," Dobbs said of his success Friday. "He's historically one of the best pitchers in the game. That staff is full of them, really. If you're going to pick a time to go after a pitch, you don't want to miss. You want to make the most of that. It's a lot fun competing against those guys because they're the best."
Florida (59-72) improved to 4-9 overall against the Phillies and 2-5 at Citizens Bank Park this season. The Marlins were swept in four games during their last trip to Philadelphia, June 14-16, when they scored a total of six runs in the four contests.
"We keep it entertaining, no question about that, every night," McKeon said. "Thank God we were able to hold on." The Marlins had scored the go-ahead run in the fourth when Mike Stanton reached on Dobbs' double to make it 2-1.
Florida took a 1-0 lead in the first when Emilio Bonifacio scored on Logan Morrison's double-play groundout. Bonifacio was on second after singling and stealing second.
Valdez's solo homer in the third was the Phillies' first hit and tied the game at 1.
Philadelphia didn't get its second hit until Polanco's two-out single in the sixth. Chase Utley followed with a double down the left-field line to put runners on second and third for Howard. Hensley was lifted for left-handed reliever Mike Dunn and Howard launched the reliever's second pitch deep to right to pull Philadelphia to 6-4.
"I would've liked the opportunity to finish the inning, but it's not my call," Hensley said.
The three-run homer gave Howard 99 RBIs for the season, leaving him one shy of reaching 100 for the sixth straight season. Howard averaged 136 RBIs in the previous five years.
Notes: The Phillies and Marlins postponed their game scheduled for 7:05 Saturday night due to Hurricane Irene and will make it up on Thursday, Sept. 15 in Philadelphia at a time to be determined. The clubs are still scheduled to play what was supposed to be the first game of a day-night doubleheader at 1:05 Saturday. ... Philadelphia RHP David Herndon pitched a 1 1-3 scoreless innings of relief to extend his career-best scoreless streak to 13 innings. ... Pence went 2 for 4 and has hit safely in 20 of his 24 games with Philadelphia. ... The Phillies' crowd of 45,523 was their 191st straight sellout. Philadelphia RHP Roy Halladay (15-5, 2.56) is scheduled to start for the Phillies against Florida RHP Anibal Sanchez (7-6, 4.01) at 1:05 Saturday afternoon. In nine career starts at Citizens Bank Park, Sanchez is 1-5 with a 7.04 ERA and the Marlins are 1-8 in those games. Halladay, who pitched a perfect game against the Marlins last May, is winless in two starts against Florida this season (0-1, 3.00).