Carlos Beltran, Allen Craig, Matt Holliday and David Freese also had two of St. Louis' 17 hits. Craig came into the game in a 1-for-27 slump, and he had a two-run double in the seventh.
Charlie Morton (3-3) struggled against the Cardinals again, giving up five runs and 10 hits in six innings. He is 2-8 in his career against St. Louis.
"I made some bad pitches, some pitches that I could executed better and other that I wasn't smart about," Morton said. "I'm not saying they wouldn't have scored any runs, but I could gone about it better."
Morton threw a wild pitch that made it 1-0 in the second. St. Louis scored three times in the fourth as Jon Jay was hit by a pitch with the bases loaded, Cruz grounded into a double play and Pete Kozma had an RBI single.
Beltran doubled in a run in the sixth before the Cardinals broke the game open an inning later.
"Today was a good sign for our team," Craig said. "There was no panic. We brought a lot of energy. You hate to go into lulls like we did because we've played so well all season long but I think this game should get us going again."
NOTES: CF Starling Marte had two of Pittsburgh's five hits. He has a hit in all 12 career games against the Cardinals. ... Pittsburgh C Russell Martin sat out the game with a sore left knee. ... St. Louis opens a three-game series Friday night at Cincinnati with RHP Shelby Miller (10-7, 2.79) facing RHP Bronson Arroyo (9-8, 3.26). ... RHP Gerrit Cole (5-4, 3.56) will pitch for Pittsburgh on Friday night in the first game of a three-game series against Colorado's Jhoulys Chacin (9-5, 3.54).