It was the second straight outstanding outing for Halladay (6-6), who missed 42 games while on the disabled list with a strained lat. He returned July 17 and struggled in his first three starts back, going 0-1 with a 5.82 ERA. He threw seven innings in a 3-0 victory over Arizona on Saturday.
The right-hander matched a season low by allowing just two hits, while striking out eight and walking none. He didn't allow a hit after Jon Jay's two-out single in the third, retiring 16 of his final 17 batters. The only hitter to reach base was Yadier Molina, who got to first after being hit on the left elbow leading off the fifth.
The Cardinals threatened in the ninth off Jonathan Papelbon, who pitched a scoreless inning for his 25th save in 28 chances. Papelbon gave up a one-out double to Allen Craig and a two-out single to Carlos Beltran to put runners on first and third. But Papelbon got Beltran trying to steal second, throwing ahead of the runner to easily get Beltran after he left first base too early.
Beltran homered for the Cardinals, who have lost three of four.
Jimmy Rollins led off the eighth with a single to left off reliever Barret Browning (0-1), went to second on the left-hander's balk and to third on Juan Pierre's sacrifice bunt before scoring on Utley's towering homer to right-center that gave Philadelphia a 3-1 lead.
The loss ruined another solid effort by Cardinals starter Kyle Lohshe.
The right-hander has been stellar all season and was 6-0 in his last nine starts entering Friday. He had given up two earned runs or less in eight of the nine outings with a 2.52 ERA in those starts.
He continued his mastery of hitters, allowing one run and four hits while setting a season high with seven strikeouts in seven innings. Lohse, who walked two, allowed only three batters to reach second base.
Lohse was pinch hit for with two outs in the eighth, but Halladay struck out Matt Carpenter.
Beltran's leadoff homer to right in the second gave the Cardinals a 1-0 lead.
The Phillies tied the score in the bottom of the inning. Ryan Howard opened it with a double to right and scored on Domonic Brown's single that glanced off the glove of diving second baseman Daniel Descalso and into short right field.
Notes: The Phillies inducted former C Mike Lieberthal into the club's Wall of Fame in a pregame ceremony that was attended by Hall of Famers Mike Schmidt and Steve Carlton, among other Phillies greats. ... St. Louis called up INF Ryan Jackson from Triple-A Memphis before the game. . Phillies minor leaguer Gabriel Bermudez was suspended 50 games for a violation of Major League Baseball's drug policy. Bermudez was playing on the club's Venezuelan Summer League team. . The three-game series continues Saturday night with Philadelphia LHP Cliff Lee (2-6, 3.78) scheduled to face Cardinals RHP Jake Westbrook (11-8, 3.76).