Regardless, the Phillies brush-stroked away his mistakes and got him his 17th victory with a come-from-behind 5-4 win, their fifth in a row.
The Phillies were in debt to Halladay for the many well-pitched games he had given them without much support.
"I really wasn't happy with the mistakes, but to come out of a game like that with a win right now I think is good," said Halladay, who still was clever enough to keep the bases clean for each of the homers he allowed. "As a pitcher it's a great feeling. You get that and, instead of [getting down on] yourself, you come in a little more upbeat and get right back at it."
The Phillies, who remained one game behind Atlanta in the NL East, compensated for Halladay's off-night with another efficient effort from the bullpen and hustle on the basepaths by Wilson Valdez.
The Phillies got two hitless innings from relievers J.C. Romero, Ryan Madson and Brad Lidge, as the trio protected a one-run lead over the final two innings with Lidge pitching a clean ninth inning for his 20th save.
The Brewers bullpen was another story. The Phillies got to Kameron Loe and Zach Braddock, a former Gloucester Catholic High standout, for the tying and winning runs in the seventh inning.
The Phillies were down, 4-3, when Shane Victorino and Carlos Ruiz began the seventh with singles off reliever Kameron Loe. Braddock relieved Loe and walked pinch-hitter Valdez to load the bases. With one out, Placido Polanco scored Ruiz with a sacrifice fly. When the throw from left field got away from catcher Jonathan Lucroy, Valdez raced home with the eventual winning run.
"That was Valdez with some good baserunning," manager Charlie Manuel said. "He took a chance. The credit goes to the guy running the bases."