Roy Halladay's margin for error is thin these days. So after allowing a run to Florida in the first inning, the Phillies' ace had a brief discussion with home plate umpire Tony Randazzo about the strike zone.

He had a feeling one run could matter on a night like Thursday.

"You obviously know what you're in for," Halladay said.

The Marlins' Josh Johnson outdueled Halladay and Florida won, 2-0, at Citizens Bank Park. The Phillies were shut out for the seventh time in 2010, equaling their total for all of 2009.

And it marked the fourth time in Halladay's last six starts that the Phillies lost.

It hurts anytime the Phillies ruin a good pitching performance (a feat accomplished often of late). But it's even worse when Halladay is on the mound. He's the ace with the $60 million arm, and the Phillies expect to win every time he pitches.

This time, Johnson was the better pitcher.

"It was good pitching from both sides," Phillies third baseman Placido Polanco said. "We weren't able to score any runs. It's another [case of] bad timing because Halladay pitched great."

Yet again, the Phillies failed to score for Halladay. In his last six starts, the Phils have scored 11 runs (1.8 per game). Heck, the only run the Phillies scored in his perfect game against the Marlins was unearned.

He would have taken that on Thursday.

In the first, Halladay quickly erased any drama of pitching a second perfect game. He put the first three runners on - a single by Chris Coghlan, a single by Gaby Sanchez and a walk to Hanley Ramirez. Jorge Cantu hit a sacrifice fly to right, scoring Coghlan.

Halladay was most upset about a 2-2 cutter to Coghlan, a borderline pitch low in the zone. Halladay said he wasn't arguing with Randazzo about whether it was a ball or a strike. He wanted to know if it was a call the umpire misjudged or just decided it was a ball.

"He seemed to think that" the low pitches were balls, Halladay said. "He stayed that way. It's good to know."

But already, Halladay had given up too much.

Johnson was dominant. After a third-inning double by Shane Victorino to lead off the third, Johnson retired the final 17 batters he faced. After Johnson threw 113 pitches in eight innings, Florida manager Fredi Gonzalez chose closer Leo Nunez to pitch the ninth.

He allowed a double to Polanco but induced a groundout from Chase Utley and struck out Ryan Howard to end the game.

Phillies manager Charlie Manuel said Thursday was more about good pitching rather than bad hitting. Howard agreed.

"I think coincidentally that it kind of comes off the rut that we were in," Howard said, "so people will want to look at it as that, but sometimes you have to tip your hat."

After the shaky first, Halladay did not allow more than one baserunner in any inning. He allowed the one earned run, struck out eight and walked just one. He threw 118 pitches, 76 for strikes, and yielded six hits. He likely could have pitched his major-league-leading sixth complete game of the season, but Manuel pinch-hit for Halladay in the eighth.

Halladay's season ERA stands at 1.96. Johnson's is slightly better at 1.91.

The Florida righthander, a hard-luck loser when Halladay pitched his perfect game May 29 at Sun Life Stadium, won for the fifth time in 11 career starts against the Phillies. In 15 innings against the Phils in 2010, Johnson has yet to allow an earned run.

He easily dispatched the middle of the Phillies' order. Utley, Howard and Jayson Werth were a combined 1 for 8 against Johnson. Werth, who was benched by Manuel on Tuesday for a mental rest, was 0 for 3 with two strikeouts.

Said Manuel: "We didn't hit very many balls hard."