Wainwright (13-5), a member of the National League All-Star team, gave up six hits and struck out four to record his ninth victory in 10 career decisions against the Astros.
Kyle McClellan preserved the shutout with a perfect ninth in a non-save situation.
Pujols doubled in a run in the first and hit a two-run homer in the ninth. It was his 21st home run of the season.
Holliday hit a three-run shot in the eighth to expand what had been only a 2-0 lead going into the inning.
Houston had won three in a row. Bud Norris (2-6) surrendered five runs on seven hits in 7 2/3 innings to take the loss.