The game was called in the middle of the seventh after a delay of 35 minutes.

Halladay (2-2), rocked in his first two starts of the season, worked seven innings and allowed two hits, homers by Carlos Beltran and Matt Holliday in the second and seventh, respectively. He had beaten Miami 2-1 for his 200th career victory on Sunday.

Halladay struck out six and walked two.

The Phillies (7-10) had scored just 55 runs in their first 16 games -- an average of 3.44 per game, tying them for 22nd in the majors -- but they lashed 10 hits in support of Halladay. Catcher Humberto Quintero went 2 for 3 with two RBI. Ben Revere, Jimmy Rollins and John Mayberry Jr. also had two hits apiece, and Revere scored two runs.

Jaime Garcia (1-1) took the loss for St. Louis, allowing nine hits and eight runs (four earned) in three innings.

The Phillies matched their biggest inning of the year when they scored five times in the bottom of the first. With two outs, Chase Utley walked, the first base on balls drawn by a Philadelphia hitter in the last five games.

Michael Young followed with a single to center, extending his hitting streak to 10 games. John Mayberry Jr. then doubled in a run, and two more scored on a throwing error by Cards third baseman Ty Wigginton. Revere and Quintero added RBI on a triple and double, respectively.

Beltran led off the top of the second with a homer, his second in as many days and his fourth in 47 career at-bats off Halladay.

Utley made it 6-1 when he singled over a drawn-in infield with one out in the second to bring in Rollins, who had led off with a double and moved to third on a groundout by Freddy Galvis.

Quintero singled in a run in the third, and the Phils extended their lead to 8-1 later in that inning when Revere scored on Garcia's wild pitch.

NOTES: The Phillies recalled pitcher Joe Savery from triple-A Lehigh Valley to fill John Lannan's roster spot. Lannan had been placed on the 15-day disabled list Thursday with a strained quadriceps tendon near his left knee, though manager Charlie Manuel said he will likely be out six to eight weeks. ... Phils first baseman Ryan Howard did not start because of tightness in his groin. Kevin Frandsen filled Howard's spot at first, and Young was moved into the cleanup spot in the order, where Howard normally hits. ... The Cardinals' starting staff began the night with 86 strikeouts, equaling Cincinnati for most in the National League.