Entering the game with a 28-game hitting streak, Pujols singled in the top of the first to give him the longest run by a Cardinal since Ken Boyer's 29-game streak in 1959. Pujols, who finished a home run shy of the cycle, is four games away from tying the club record set by Rogers Hornsby in 1922.
Williams (14-6) was ineffective in the opening inning, allowing a solo shot by Ledee on his fourth pitch of the game and ending the frame in a 5-0 hole. The right-hander, who had not lost three straight decisions since June 1-12, 2001, surrendered ten hits and two walks with three strikeouts in five innings.
The Cardinals pulled within a run on Jim Edmonds' 30th homerun of the season in the fifth, but Thome belted his 31st in the sixth to give the Phillies a 7-4 cushion.
Vicente Padilla (11-8) labored through five-plus innings, allowing four runs and nine hits with two walks and four strikeouts. Three relievers held on to give Padilla his fourth straight win.
"It was huge," Padilla said of the early lead through an interpreter. "That was the first time I had a five-run lead since last time I pitched in New York. That is good for the team. We have been swinging the bat pretty good lately."
Dan Plesac tossed a perfect ninth for his first save of the season and fourth since the start of the 1999 campaign. "Coming off the field, Jimmy Rollins asked me, 'When was your last save?'" Plesac said. "I said, 'I think Moby Dick was a minnow when I got my last save.'"
After Ledee gave Philadelphia the lead, Placido Polanco and Bobby Abreu stroked back-to-back singles. Thome walked to load the bases, but Pat Burrell popped out. Chase Utley, who collected three hits Thursday in his first game since being recalled from Class AAA Scranton/Wilkes-Barre, lifted a sacrifice fly to plate Polanco. Jimmy Rollins, Todd Pratt and Padilla followed with RBI singles, giving the Phillies a 5-0 cushion.
"It was great to get five runs in the first," Phillies manager Larry Bowa said. "Ledee started us off and to bat around in the first inning is something nice to see against that team."
St. Louis chipped away at the deficit, scoring twice in both the fourth and fifth innings. Pujols led off the fourth with a double and scored on Tino Martinez' two-base hit. After former Phillie Scott Rolen flied out, Orlando Palmeiro singled to pull the Cardinals within 5-2.
With one out in the fifth, Bo Hart was hit by a pitch and Edmonds belted a 2-2 offering into the upper deck in right field to make it a one-run game.
"My location was not there," Padilla said. "When I did try and throw the ball over the plate, they hit it."
Padilla allowed singles by Palmeiro and Edgar Renteria in the sixth before being relieved by Terry Adams, who retired three straight batters to escape unscathed.
The Phillies got back two runs in the bottom of the inning to take a 7-4 lead. With two out, Abreu singled, stole second and scored on Thome's blast to right.
St. Louis threatened in the seventh and eighth but could not draw any closer. Abreu misplayed a single by Pujols into a triple, but Adams fielded a comebacker from Martinez and caught Pujols between third and home.
Turk Wendell started the eighth and was greeted with singles by Palmeiro and Renteria. But Mike Matheny lined out and Miguel Cairo and Hart flied out to end the inning.
The series continues Saturday with rookies Dan Haren (3-3, 3.74) and Brett Myers (11-7, 3.78) opposing each other.