Halladay (2-2) allowed two runs, walked two and struck out six to record a complete game. He's had consecutive strong outings after starting the season with two poor ones. The two-time Cy Young Award winner is coming off an injury-plagued, subpar year, but has looked like his old self this week.
Garcia allowed eight runs — four earned — and nine hits in three innings.
The game was called after a 35-minute rain delay before the bottom of the seventh.
Chase Utley started Philadelphia's big first inning with a two-out walk, snapping the Phillies' unusual streak of four games without drawing one. Michael Young followed with a single. Mayberry ripped an RBI double to left. Then Kevin Frandsen hit a sharp grounder, but third baseman Ty Wigginton made a diving grab. Wigginton, however, made a wild throw to first and the error allowed two runs to score.
Revere ripped an RBI triple to left-center for his first extra-base hit in his 66th at-bat, and Quintero lined an RBI double to make it 5-0.
Utley had an RBI single in the second, and Quintero drove in a run on a single in the third.
The Phillies helped Halladay with excellent defense. Left fielder Freddy Galvis made a diving, backhanded catch on a sharp liner and Revere made a headfirst sliding catch on a ball to shallow center.
Halladay allowed 12 runs and 12 hits in 7 1-3 innings in his first two starts. But he was solid against a weak Marlins lineup last Sunday, giving up one run and five hits in eight innings.
The Cardinals were a tougher test. Halladay only made two bad pitches, and Beltran and Holliday got hold of both.
Notes: Suspended Phillies C Carlos Ruiz was hit on the left wrist in an extended spring game. X-rays were negative and he's day to day. ... The Phillies hadn't scored a run before the sixth inning in their previous seven games. ... Young extended his hitting streak to 10 games. ... Cardinals C Yadier Molina had his first game off this season. Tony Cruz started in his spot. ... RHP Lance Lynn (2-0, 5.40) goes against LHP Cliff Lee (2-0, 1.52) on Saturday night.
Link to box score: Philadelphia 8, St. Louis 2
Link to game discussion at The Cardinal Nation message board