Lance Lynn surrendered a two-run home run to Jay Bruce in the bottom of the first inning followed by a solo shot from Todd Frazier. The back-to-back homers put Cincinnati up 3-0.
Peralta connected for a two-run blast in the top of the second to cut the deficit to one. It was the start of seven unanswered runs for St. Louis.
Jon Jay and Matt Holliday each contributed RBI doubles, and Allen Craig and Yadier Molina drove in runs in the seventh inning. Holliday capped off the Cardinals scoring by crossing the plate on a wild pitch.
Frazier homered for a second time in the game, a three-run shot in the seventh, to bring Cincinnati back within one.
Lynn didn't allow a run after the Reds back-to-back home runs in the first inning. He got the win tossing five innings giving up three earned runs on eight hits, one walk and seven strikeouts.
Trevor Rosenthal entered in the eighth inning to get four outs for his second save of the season.
Matt Adams went 3-5 at the plate raising his average to .417 on the season. Holliday was the only other Cardinals with a multi-hit game going 2-4 with a walk and driving in a run.
The Cardinals travel to Pittsburgh to begin a three-game set with the Pirates Friday.