Montero also doubled, singled and drove in four runs for the Diamondbacks, who won for the first time since finishing a three-game sweep of the struggling Mets last Wednesday in Arizona.
"For some reason, these guys play extremely well against us," New York slugger David Wright said.
The Mets wasted Wright's two long homers and five RBIs, done in by a dreadful relief outing from left-hander Raul Valdes (2-3) after another shaky start by Mike Pelfrey. Valdes gave up hits to all four batters he faced, turning a one-run lead into a 9-5 deficit in 14 pitches.
Arizona's outburst was aided by Jose Reyes' error at shortstop and it made a winner of Ian Kennedy (6-8), who went six innings and allowed only three hits. Two of them were no-doubt homers by Wright -- a three-run shot that tied it in the first and a two-run drive that put New York up 5-4 in the third.
"I'm just really thankful for the offense. They bailed me out here," Kennedy said.
Earlier in the day, the rebuilding Diamondbacks unloaded an All-Star pitcher for the second time in a week when they shipped starter Edwin Jackson to the Chicago White Sox for rookie Daniel Hudson and prospect David Holmberg.
"When I first came in here, we kind of trimmed Ian Kennedy's innings back a little and I think that it's helped him," interim manager Kirk Gibson said. "He does seem a little stronger."
Two fans carrying Mexican flags ran into the outfield during the seventh inning but were apprehended by security fairly quickly without much incident.
Before the game, a group of about 40 demonstrators across the street from Citi Field protested Arizona's immigration law, chanting and handing out leaflets that requested Major League Baseball move next year's All-Star game from Phoenix.
Pelfrey threw 51 pitches in the first inning July 19 at Arizona and was chased after getting only four outs, the shortest start of his career. He yielded six runs and seven hits in a 13-2 loss.
The big right-hander, 0-3 in six starts since beating Minnesota on June 25, recovered from a rough first inning in this one and left with a chance to win after 118 pitches. Still, he's 0-5 in seven career starts against Arizona.
"Everybody else in the rotation has been throwing the ball great and I've kind of taken a step back from early in the year," Pelfrey said. "I definitely plan on getting this thing turned around and back on track so we can start winning some games."
Pelfrey retired seven straight batters before Kennedy reached on Reyes' one-out error in the sixth.
"I have to make that play. Routine ground ball. I always make that play," Reyes said.
One out later, Valdes entered to face the left-handed hitting Johnson, who drove a 1-1 pitch to center for his 17th home run and a 6-5 Diamondbacks lead.
Mets manager Jerry Manuel then pulled Valdes, and both were booed as they came off the field.
"Everything was up, and everything the last few weeks was down," Valdes said through a translator. "It just happened today I was up and I paid the price."
LaRoche, Montero and Mark Reynolds hit consecutive RBI singles in the first inning, the last two deflecting off the glove of a diving Wright at third base.
Montero hit a leadoff double in the third and scored on Stephen Drew's double.
"I'm swinging at better pitches I think," Montero said. "I got pretty good pitches to hit in a couple of spots tonight and I got really good swings on them."