Holliday's solo shot in the third inning gave St. Louis a 2-0 lead but the Rockies came back in the next frame to tie the score on a two-run blast from Tyler Colvin.
After Carlos Beltran put St. Louis back on top with an RBI groundout in the fifth off Tyler Chatwood (1-1), Craig followed with a two-run clout for a 5-2 St. Louis lead.
Craig later added a bases-empty shot and David Freese contributed three hits as the Cardinals claimed the opener of a four-game series.
Kyle Lohse (8-2) collected the victory, holding the Rockies to two runs on nine hits in a 7 1/3-inning effort, walking two and striking out five.
Wilin Rosario went 2-for-4 with a solo homer for Colorado.