Kennedy (15-3) extended his career-best winning streak to seven games by allowing one run on six hits and three walks.
Justin Upton had a solo home run in the win, which extended Arizona's lead over the San Francisco Giants in the NL West to two games.
J.J. Putz allowed a run in the ninth, but held on to record his 28th save of the year.
Dillon Gee (10-4) allowed four runs on five hits and a walk in five innings to take the loss.
"I made a couple of mistakes early in the game that really cost me, but really I felt pretty good," said Gee. "Especially the last four innings I was feeling pretty good and hopefully this is something I can take into my next start."
Jason Bay had three hits, an RBI and a run scored in the Mets' third straight defeat.
Putz allowed a leadoff, pinch-hit double to Scott Hairston in the ninth. Hairston later scored on a sacrifice fly by Willie Harris, allowing the game- tying run to come the plate with two outs. But Putz induced a groundout to second by David Wright to end the game.
Upton gave Arizona the early lead with his homer in the first.
After Xavier Nady was hit by a pitch with one out in the second, Sean Burroughs, Ransom and Kennedy hit consecutive doubles to plate three runs and put the D-Backs ahead, 4-0.
"It helps, especially by the 2nd inning you're up 4-0 and you know you can just be aggressive," Kennedy said about getting an early lead. "It makes it more challenging because you know you have that lead and can just go after guys."
The Mets got on the board in the fifth when Angel Pagan led off the frame with a single, moved to second on a wild pitch and came around to score on Bay's single to left.
New York edged closer in the eighth when Bay greeted reliever David Hernandez with a double, advanced to third on Josh Thole's flyout, and crossed the plate on a Jason Pridie groundout.