Holliday hit a two-run homer in the first inning and his three-run blast in the seventh put the Cardinals ahead 6-5 in a game delayed 87 minutes by rain.
Jake Westbrook (10-8) got the win despite allowing five runs on nine hits in six innings.
Yadier Molina went 3-for-5 with an RBI for the Cardinals.
Tyler Colvin went 3-for-4 with an RBI and two runs scored for the Rockies, who lost their seventh in a row at Coors Field.
Matt Belisle (3-3) was saddled with a blown save and took the loss in relief for the Rockies, after serving up the home run to Holliday in the seventh.