Ryan Roberts hit a three-run homer and scored 4, in the second test of a three- game series.

Hudson (12-8) gave up four runs -- two earned -- on eight hits to pick up the win. He also had an RBI single in the sixth for the Diamondbacks, who have won five in a row and sit two games ahead of the Giants in the NL West.

Ruben Tejada drove in two runs for the Mets, who have dropped four straight.

New York starter Mike Pelfrey allowed three runs -- two earned -- on four hits over four-plus innings. D.J. Carrasco (1-3) was charged with two runs on one hit in one inning of relief to suffer the loss.