After the game, Phillies manager Charlie Manuel was quick to praise Johnson's performance.
"He's very good, he pitched a good ballgame," Manuel said. "We didn't hit very many balls hard."
But the manager's postgame talk turned, inevitably, to Philadelphia's woeful slump, which continues to both puzzle and concern him.
Manuel was asked if he ever thought the Phillies would be held scoreless this many times so early in the year.
"Did I think it was possible?" Manuel said. "I never thought about getting shut out that many times, no. But did I think it was possible in this game? There's a whole lot of [stuff] possible."
Halladay was the tough-luck loser this time, in his 300th career start, falling to 8-4 on the season. It's the third time he has lost with his team scoring one run or fewer.
"It's hard to get rolling when you have a good day and run into, really, one of the best pitchers right now," Halladay said. "He's been on a roll, so that makes it tough. No, I'm not concerned. There are a lot of good players in there that know how to win."
Florida's first batter of the game, left fielder Chris Coghlan, singled on a 3-2 pitch up the middle, something all 27 batters couldn't do against Halladay in their previous meeting. Another single and a walk followed to load the bases for cleanup hitter Jorge Cantu, who hit a fly ball deep to right field for a sacrifice fly.
Halladay, who has allowed 89 hits in his 12 starts besides the perfect game, will often get himself into those situations and likewise get himself out. He forced a strikeout and a groundout to end the threat.
But the one runner who came around to score represented the lone dash on the scoreboard up until the ninth inning, when Dan Uggla homered off Phils reliever Danys Baez to provide an extra ounce of insurance.
"I think it's more about him than what it says about our offense," Halladay said of Johnson. "We swung the bats well the day before yesterday and just ran into a hot pitcher who's pitching well right now, and he made it tough for us.
The Phillies put runners on second and third with two outs in the first against Johnson. But outfielder Jayson Werth struck out swinging on a low slider to end the inning.
Werth, who was benched on Tuesday and would've been out of the lineup again Wednesday if not for a rainout, has three hits in his past 42 at-bats (including one in his past 21 with runners in scoring position).
Johnson retired 17 in a row before leaving after the eighth inning. It's the sixth time this season Philadelphia was held to four or fewer hits.
"You have to tip your hat to the guy," Phillies first baseman Ryan Howard said. "Josh Johnson threw a great game. He was throwing 94-97 [mph], getting his fastball in, jamming guys, mixing it up, enough of his slider and offspeed to keep us off balance a little bit. I think that coincidentally, it comes off the rut that we were in."
It's the sixth consecutive start Johnson has gone at least six innings and allowed one run or fewer, becoming the first pitcher since St. Louis' Chris Carpenter to accomplish that feat. Johnson is 4-2 with an 0.43 ERA during that span.
"I've said it for years now: I'll take one run with JJ against anybody and take my chances," Uggla said.
Yet the fans in Philadelphia are beginning to grow restless, and boos were heard after Howard struck out to end the game with Placido Polanco on third base. Lately, it seems, getting a win practically requires perfection.
"We know we haven't been scoring runs and hitting the ball," Manuel said. "That's how it is. We've got to do better."