Dickey (18-4) gave up both St. Louis runs on eight hits and one walk over 6 2/3 innings. He struck out five.
Josh Thole singled in a run in the second and Lucas Duda walked with the bases loaded in the third before Ike Davis hit a three-run home run in the fifth for the Mets. It was Davis's 26th home run this season.
St. Louis starter Adam Wainwright snapped an 11-inning scoreless string for Dickey with his first home run since 2009 in the third inning and the Cardinals got a run in the seventh off a double play to account for the St. Louis offense.
Wainwright (13-12) was charged with five runs on eight this in five innings. He walked two and struck out five.
The Mets picked up an insurance run in the eighth on an Andres Torres RBI single.