Holliday drove in four runs with RBI hits in the third, seventh and ninth innings while Craig knocked in three more, including a two-run homer, as the Cards took the rubber match of a three-game set.
Mike Carpenter went 3-for-5 with a run scored for wild card-contending St. Louis, which won for the fifth time in six contests overall.
Adam Wainwright (13-10) logged a victory in his fifth straight start, holding the Reds to a pair of runs on six hits over 5 2/3 innings. He didn't issue a walk and fanned two en route to the triumph.
Homer Bailey (10-9) was roughed up for five runs on nine hits over six full frames for National League Central-leading Cincinnati.
'Happy' fan videos make Pharrell cry [VIDEO]
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards