The Mets have won eight of their past 11 games and closed their second-longest road trip of the season with a 6-3 mark.
Dickey (18-4) is the first New York hurler to record 18 wins in a season since Frank Viola won 20 and Dwight Gooden won 19, both in 1990.
The University of Tennessee product wasn't razor sharp against the hard-hitting Cardinals. He allowed two runs on eight hits and struggled at times during the 104-pitch outing. But he managed to limit the damage while Davis and Daniel Murphy handled the offensive chores.
"It was a battle for me," Dickey said. "It was humid, and I didn't have a good feel for [the knuckleball] early on. I'm pleased with the result -- but I've got some work to do."
Davis slammed his 26th homer of the season in the fifth inning, pushing a one-run lead to 5-1. It was his NL-leading 19th homer on the road this season.
Murphy went 3-for-5 and improved his average in day games to a league-leading .351. He has hit safely in his past eight games, batting .371 in that span.
Dickey, who struck out five and walked one, has allowed two earned runs or fewer in four consecutive starts. He deflected credit for the win to Davis, who gave him some necessary breathing room with his key roundtripper. The red-hot Davis has six home runs and 14 RBIs in his past 19 games, including game-winning hits on Aug. 26 and 28.
"It freed me up; I didn't have to be so fine," Dickey said of Davis' homer. "I could use some other pitches that I knew I could command for strikes. They got some hits on those pitches, which normally I wouldn't have thrown."
Mets manager Terry Collins was impressed with Dickey's ability to stay the course despite having less-than-dominating control of his knuckleball.
"He battled very, very hard," Collins said. "He didn't have his best stuff. But he continued to work and worked himself out of it like he always does."
Josh Thole, Dickey's personal catcher, was also pleased with his gutsy performance.
"In-game adjustments, that's what was more impressive today than anything," Thole said. "I can say today was definitely not his best knuckleball by any means. He put his ego away and said, 'You know what, I'm going to have to use my sinker now.'"
The Mets got to St. Louis starter Adam Wainwright (13-12) for five runs on eight hits in five innings. They scored single runs in the second and third innings before taking control in the fifth. Mike Baxter and Murphy singled in front of Davis, who drilled a 1-1 pitch over the wall in left.
"I thought it had a chance," Davis said of the 385-feet drive. "It didn't get out by a lot."
Wainwright said Davis simply won the one-on-one battle.
"It was a good swing on a pretty good pitch," Wainwright said.
The Mets jumped out in front in the second inning on a run-scoring hit by Thole. Justin Turner began the rally with a two-out double that skipped just under the glove of Carlos Beltran in right.
Lucas Duda pushed the lead to 2-0 by coaxing a bases-loaded walk in the third. Baxter and Murphy singled to get the rally started, before Davis drew a walk to set the table.
Wainwright hit his first homer of the season off Dickey to lead off the third.
Dickey, who tossed a seven-hit shutout against St. Louis on June 2, threw 13 consecutive strikes during a perfect first inning. He worked out of two-baserunner jams in the second, fourth and fifth innings.
St. Louis put the first two runners on in the fourth, but Dickey used his sinker to get Shane Robinson to ground into a double play. He then struck out Daniel Descalso to end the threat.
"If a hiccup occurs and you get a win -- it's nice," Dickey said.
Baxter, Thole and Turner added two hits each to the 12-hit attack.
New York relievers Josh Edgin, Jon Rauch and Frank Francisco combined to allow just one hit over the final 2 1/3 frames.
Mets infielder David Wright, who is hitting .313, was given the day off. Wright has appeared in 132 of 137 games.