Jonathon Niese (4-6), in his first start since June 20, came off the disabled list to go six innings, giving up four runs and seven hits in his first win since May 16. The Mets took two of three from the Diamondbacks.
The Mets scored four unearned runs in the first, three on first baseman Paul Goldschmidt's fielding error with two outs and the bases loaded.
Aaron Hill's three-run home run cut the lead to 5-4 in the third, but Brown's three-run shot made it a four-run game in the seventh.
Arizona's Cody Ross was carted off the field in the first inning with a dislocated right hip.
Ross stumbled as he approached first base while trying to beat out a grounder, then fell to the ground. He was grimacing and grabbing his right leg as he was loaded onto the cart. After X-rays, the team announced he had dislocated his hip.
Niese, out for seven weeks with a partially torn rotator cuff, struck out five and walked one.
The Diamondbacks' Zeke Spruill (0-2), in his second major league start, gave up a one-out single to Juan Lagares in the first, then walked Daniel Murphy and Ike Davis to load the bases. Mike Baxter's grounder to first deflected off Goldschmidt's glove and all three runners scored. Anthony Recker's double brought in the fourth run.
It was the fifth error of the season for Goldschmidt.
After Hill's RBI double in the first cut it to 4-1, the Mets had runners at first and second with one out in the third when Omar Quintanilla singled to center. One run scored, but Cliff Pennington's relay throw from center fielder A.J. Pollock cut down Baxter trying to score from first.
Pollock led off the Arizona fourth with a single, then Goldschmidt drew a one-out walk to bring up Hill, whose shot to left cut New York's lead to 5-4.
In the seventh, Davis drew a one-out walk -- the ninth consecutive time he'd reached base -- and Flores singled. Will Harris relieved Joe Thatcher and Brown's second pinch-hit homer of the season made it 8-4.
Spruill allowed five runs, just one earned, and six hits in three innings. He walked two.
Ross' injury opened the way for the major league debut of third baseman Matt Davidson, the MVP of this year's Futures Game. Davidson, called up from Triple-A Reno, entered the game when Martin Prado was moved from third to left to take Ross' place. Davidson singled to lead off the sixth for his first major league hit ... The Mets face the Dodgers in Los Angeles starting Monday, with RHP Jenrry Mejia (1-1, 1.96) ERA on the mound for New York against RHP Ricky Nolasco (8-9, 3.95). Arizona wraps up its eight-game homestand with three interleague games against Baltimore. LHP Wade Miley (9-8, 3.56) starts the Monday night's series opener for the Diamondbacks, with RHP Scott Feldman (2-3, 5.70) on the mound for the Orioles. ... To make room for Niese, the Mets optioned RHP Jeremy Hefner to Triple-A Las Vegas. However, Hefner was sent to New York for tests on his ailing right elbow and could wind up on the DL. ... Arizona placed 3B Eric Chavez on the 15-day DL with a left knee strain.