Pujols led off both the seventh and ninth innings with homers, giving St. Louis its seventh win in eight games.
Skip Schumaker had three hits for St. Louis and Rick Ankiel drove in two runs. Starter Braden Looper (2-0) lasted 5 2/3 innings to get the win, giving up three runs on five hits. Jason Isringhausen picked up the save, his fifth.
The loss went to Chris Sampson (0-1), who surrendered three runs on six hits in four innings.
St. Louis built a 4-0 lead and Pujols made it 5-2 with his homer in the seventh. Michael Bourn doubled in two runs for Houston to get the Astros within one before Pujols homered on the first pitch of the ninth inning off Oscar Villarreal.