The loss knocked the Mets out of first place in the division. Philadelphia, which beat Washington 8-5, moved into first, one-half game in front of New York and 1½ ahead of the Marlins.
Johnson (1-0) allowed eight hits and four runs in his fourth start since returning from reconstructive elbow surgery in August 2007. Johnson, who doubled home a run, last won on Aug. 28, 2006. The Marlins improved to 4-0 in his starts this year.
Pinch-hitter Damion Easley hit a three-run homer off Johnson in the seventh to cut the Mets' deficit to 5-4.
But Dan Uggla hit a two-run homer in the eighth for Florida. It was the 84th career homer for Uggla, who broke the major league record for most homers by a second baseman in his first three seasons. Joe Gordon hit 83 with the New York Yankees from 1938-40.
Kevin Gregg allowed three consecutive two-out singles in the ninth, the third by Ramon Castro to drive in a run. But Jose Reyes flied out, and Gregg earned his 23rd save in 29 chances.
The Marlins, who trailed 1-0, came from behind to win for the 32nd time, most in the NL. They overcame deficits in both victories in the three-game series.
Hermida started the hit parade in the fourth with a triple. One batter later, Jorge Cantu singled to tie the game at 1-all.
Ross tripled two batters later on a two-out, 3-2 pitch to drive in Cantu and Josh Willingham. John Baker added an RBI double, and Johnson also doubled home a run.
Pelfrey threw 42 pitches in the 24-minute half inning. The outing equaled his shortest of the season. He allowed eight hits and five runs.
The Mets had been unbeaten in his past nine starts.
Notes: Mets 3B David Wright went 0-for-4, and his team-record streak of scoring in 13 consecutive games ended. ... Mets OF Ryan Church will begin his rehabilitation stint with Single-A St. Lucie on Thursday. ... The Marlins sent RHP Daniel Barone outright to Triple-A Albuquerque. ... A ball was called against Gregg when he went to his mouth on the mound with two outs in the ninth.