Scott Rolen and So Taguchi also drove in two runs in the always-spirited interleague matchup between the team with the best record in the NL and the team with the poorest record in the majors. The Royals' seventh straight loss dropped them to 10-29, the worst mark after 39 games in the history of a franchise which has lost at least 100 games in three of the past four seasons.
Pujols hit Mark Redman's 1-1 pitch over the wall in center field after Scott Spiezio led off the fourth with a single. Pujols' major league-leading 20th homer snapped an 0-for-13 skid and gave him 50 RBI, also baseball's best. Another run scored on Redman's wild pitch and Taguchi had an RBI groundout to cut it to 5-4.
Chris Carpenter (4-2) went six innings for the win and was charged with six runs and nine hits. He walked three and struck out eight. His ERA, No. 2 in the league coming in at 1.98, rose to 2.63.
Adam Wainwright tossed 2 2/3 shutout innings for his first save. He walked one and didn't allow a hit.
Handed a 5-0 lead after three, Redman (0-4) still failed to get his first win in 16 starts dating to last July 24.
He went four-plus innings, allowing six runs and seven hits with two walks and a strikeout. Two wild pitches raised his total to seven, tying Baltimore's Daniel Cabrera for the league high.
In front of a nearly packed house that seemed roughly divided among St. Louis and Kansas City fans, the Royals loaded the bases in the third inning and got three runs on two groundouts and John Buck's RBI single. Reggie Sanders' two-run homer in the third put the Royals ahead 5-0 in the third.
But the Cardinals scored four in the fourth and five in the fifth en route to their 10th win in 13 games. They have beaten the Royals in eight of their last nine meetings and are a season-high 12 games above .500.
After Spiezio's RBI single tied it at five in the fifth, Joel Peralta relieved and gave up, in succession, a single to Pujols, a two-run double to Rolen and an RBI triple to Juan Encarnacion.
The Royals got a run in the sixth on Doug Mientkiewicz's RBI double.
For the first time since 2003, the Cardinals and Royals will play a home-and-home interleague series. KC will visit St. Louis June 30-July 2. ... St. Louis planned to recall RHP Anthony Reyes from Triple-A Memphis on Saturday and give him his second major league start. ... CF Shane Costa misplayed Encarnacion's triple in the fifth but made a great diving catch of Jim Edmonds' drive in the seventh.