Halladay struck out 11, then got pinch-hitter Ronny Paulino to ground out to end it, and was cheered by a crowd of 25,086 throughout much of the night.
"I don't know what to say," Halladay said. "Early in my bullpen I was hitting spots more than I have been. I felt like I just carried that out there."
While there were a couple of good plays behind him -- shortstop Wilson Valdez went deep into the hole for a grounder, backup third baseman Juan Castro went to his knees for another -- Halladay didn't need any great defensive work in this gem.
The 33-year-old righty known as Doc was a veritable one-man show.
Always stoic on the mound, Halladay (7-3) broke into a big smile as his teammates rushed in to congratulate him.
Halladay has long been dominant, and the former AL Cy Young winner was the centerpiece of a multiteam trade that brought him from Toronto to the two-time NL champions in the offseason.
He was within one out of a no-hitter on Sept. 27, 1998, in just his second major league start, pitching for the Blue Jays against Detroit. Pinch-hitter Bobby Higginson ended that on the first pitch he saw, hitting a solo home run.
Halladay faced three Marlins pinch-hitters in the ninth. Mike Lamb led off with a long fly ball, but Shane Victorino had plenty of time to backtrack in the super-spacious outfield at Sun Life Stadium and squeeze it for the first out.
Another pinch-hitter, Wes Helms, struck out, and the crowd filled with Phillies fans simply began to roar.
From there, it was all up to Paulino, who fouled the first pitch into the seats along the first-base side, took ball one, swung and missed for strike two, and at 9:23 p.m., hit a groundball. Castro ranged to his left to get it and threw across to first baseman Ryan Howard, who caught the ball and jumped in the air.
It was over, and the Phillies mobbed Halladay, surrounding him in a circle as stadium workers immediately -- and inexplicably -- ran out to sweep the mound and plate area.
In a week that saw the hard-hitting Phillies get shut out on three straight days by the New York Mets, Halladay delivered the most masterful pitching performance of all.
On the short list of baseball's perfect games, there are the first two: John Richmond and John Ward pitched them five days apart in 1880, two decades before what is considered the modern era.
This was the Phillies' second perfect game, with Jim Bunning having thrown one in 1964. Philadelphia has thrown 10 no-hitters, the last by Kevin Millwood in 2003.
It was the second time the Marlins had been no-hit in their history, the lone other coming by the Dodgers' Ramon Martinez on July 14, 1995.
Halladay credited catcher Carlos Ruiz for a smooth ride.
"We felt like we got in a groove early and about the the fifth or the sixth I was just following Chooch," he said. "I can't say enough about the job he did today. Mixed pitches. For me it was reallly a no-brainer."
The NL East leaders' lone run off Josh Johnson (5-2) came in the third, and fittingly in this battle of aces, it was unearned. Valdez singled, then scored when Chase Utley's fly to center skipped off Cameron Maybin's glove for a three-base error.
Valdez scored easily. And Halladay had all the support he needed.
A Philadelphia story, for certain.
Sorry, Flyers -- your return to the Stanley Cup finals on Saturday night just got upstaged, in a big way. In fact, NBC broke into its coverage of the Game 1 of the Flyers-Chicago matchup to show a replay of the final out.
There have now been three perfect games in the last 10 months, with Mark Buehrle doing it last July 23 for the Chicago White Sox against Tampa Bay.
Halladay had a complete-game one-hitter last September against the New York Yankees, though with far less drama, thanks to Ramiro Pena getting a double to right field in the sixth inning.
Unshakable on the mound, not even three-ball counts fazed Halladay, not on this night.
He went to either 3-1 or 3-2 counts seven times, twice in the game's first three batters alone, and always worked out of the trouble. Chris Coghlan tossed his bat aside on the Marlins' first plate appearance of the night, thinking he'd drawn a walk, only to hear plate umpire Mike DiMuro call strike three.
Coghlan wasn't pleased, and that was a theme for the Marlins throughout.
Hanley Ramirez had the same issue two batters later, stepping toward first after thinking a 3-1 pitch missed the zone. It hadn't, DiMuro said, and Ramirez wound up grounding out.
That was just the start.
Jorge Cantu went to a 3-1 count in the second before striking out on a foul tip. Dan Uggla had a three-ball count before flying to center in the fifth, and Maybin -- whose mistake let the Phillies score the game's first run -- added plenty of drama in the sixth.
Maybin showed bunt twice, drawing a small chorus of boos, and eventually worked his way ahead 3-1. He ended up hitting a hard shot to deep short, where Valdez fielded it on a hop and threw to Howard in time to beat Maybin by a half-step -- umpire Tim Welke taking a big swing to indicate the out.
Halladay got another nice play in the eighth when Castro went to his knees to snare a sharp grounder off Cantu's bat, recovering and throwing to first in plenty of time. When Cody Ross popped to short to end the eighth, Halladay showed no emotion, simply walking to the dugout with his head bowed a bit, tugging once on the left shoulder of his gray jersey.
Within two minutes of the game ending, the lights went out at Sun Life Stadium, in preparation for a postgame concert.
On this night, Halladay was the lone maestro.
For the Marlins, Johnson threw a career-high 121 pitches in seven innings, giving up seven hits, one unearned run, one intentional walk and striking out six.
His night was stellar -- and didn't even come close to comparing to his counterpart.
NOTES: Phillies 3B Placido Polanco (bruised left elbow) was sidelined again, Castro getting the call to start for the second straight night. Polanco is expected to undergo an MRI exam on Sunday to see if the problem is more serious than originally thought.