It was the Phillies' 10,000th loss -- giving them more defeats than any other team in North American professional sports history.
Adam Wainwright (8-7) allowed six hits and two walks while striking out five in seven innings for St. Louis.
Michael Bourn homered for the Phillies in the ninth to spoil the shutout.
Adam Eaton (8-6) gave up six runs on 10 hits, with a walk and a strikeout in four-plus innings.
The Cardinals scored twice in the second, once in the third and three times in the fifth. They broke the game wide open with a three-run seventh, when Pujols hit his second homer of the night -- and Encarnacion and Kennedy followed that with two more round trippers.