Shane Robinson went 3-for-4 with two RBI and a run scored. Craig and Jhonny Peralta both contributed two hits and a run scored for the Cardinals, who have won seven of their last eight.
Pat Neshek (1-0) earned the win after allowing just one hit over two scoreless innings in relief of starter Lance Lynn, who surrendered two runs on seven hits with six strikeouts in six frames.
Paul Goldschmidt and Aaron Hill both drove in a run as Arizona dropped its third straight game. Wade Miley (3-5) was tagged with the loss after giving up three runs on seven hits with four walks in 6 2/3 innings.