The Cardinals have won four out of six and moved into a tie with Pittsburgh for second place in the National League Central.
Freese gave St. Louis a 2-1 lead with his two-run homer in the fourth and Craig hit a solo shot in the fifth.
Adam Wainwright (11-10) gave up two runs on five hits in six innings to win his fourth consecutive decision.
Three St. Louis relievers combined to retire all nine men they faced, with Jason Motte earning his 27th save.
Video of Victoria’s Secret models trying to 'twerk' hits Instagram
Megyn Kelly: Santa Claus and Jesus are both white men