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.
Lytro unveils camera that can focus a photo after shooting it
Moore to attend retreat in to avoid Kutcher's wedding