It was the opener of a doubleheader at Shea Stadium and gave the Marlins three wins in their last four games after a four-game losing streak.
Carlos Beltran and Julio Franco each had an RBI for the Mets (51-36), who had only three hits in the contest.
Losing pitcher John Maine (0-3) gave up three runs and six hits in six innings.
Mets' first baseman Carlos Delgado was hit on his left wrist by Johnson in the second inning. Eventually, he left the game because of a bruised left hand.
X-rays were negative.
The Mets have lost two in a row after winning three straight.