Edwin Jackson allowed a lone run over six innings and has put together his first two-game winning streak of the season.
Jackson (3-8) allowed five hits and struck out seven. He had not won back-to-back games since the final month of the 2012 season.
Kevin Gregg worked a 1-2-3 ninth for his eighth save.
Daniel Murphy drove in two of the New York runs, but the Mets lost for the ninth time in 11 games.
Shaun Marcum (0-8) gave up all six Chicago runs on seven hits in 5 2/3 innings. He is the first New York pitcher in 15 years to lose his first eight decisions of the season.
Megyn Kelly: Santa Claus and Jesus are both white men
Wisconsin business offering 'therapeutic cuddling' forced to close