Holliday's RBI single in the third put St. Louis ahead to stay and he added a run-scoring hit during a three-run fifth inning that put the contest away.
Craig belted a two-run homer and added an RBI single for the Cards, who have outscored Kansas City 19-6 in winning the first two contests of their three-game Missouri rivalry series at Kauffman Stadium.
Adam Wainwright (6-7) earned the victory with two runs on six hits over seven full frames, issuing only one walk while striking out four.
Royals starter Luis Mendoza (2-4) was touched for four runs on seven hits in a 4 1/3-inning effort.
Alex Gordon had two hits, including an RBI triple, for Kansas City.
N.J. man wakes up from 10-hour sleep with knife in back
Newt Gingrich fires back at Mandela backlash