Valdespin hit a solo home run in the second inning and Davis drove home Ruben Tejada with his homer in the third at Citi Field in New York.
David DeJesus hit a one-run single in the sixth for the Cubs only score.
Dillon Gee (6-7) gave up one run on seven hits and struck out four in eight innings for the Mets. Bobby Parnell got his second save, allowing one hit and striking out one in the final inning.
“Today was all about command of his breaking ball and changeup,” Mets Manager Terry Collins said of Gee. “He pitched really good today.”
Jeff Samardzija (6-8) allowed three runs and seven hits, while striking out four in seven innings.
The Mets (46-39) are in second place, 4 ½ games behind the Washington Nationals in the five-team National League East. The Cubs are in sixth place in the six-team NL Central, 15 games behind the Pittsburgh Pirates.
To contact the reporter on this story: Nancy Kercheval in Washington at firstname.lastname@example.org
To contact the editor responsible for this story: Michael Sillup at email@example.com