MIAMI -- John Buck came away with the simplest possible assessment of new batterymate Josh Johnson.
"He's good," Buck said.
Buck made an equally strong first impression on the Florida Marlins' ace.
Logan Morrison also homered and Gaby Sanchez added an RBI single for the Marlins, who played their 19th and final opener at Sun Life Stadium. The team moves into a new ballpark in 2012.
"It's what I set out there to do, to get us off on a good foot," said Johnson, who moved to 8-1 against the Mets -- his only loss coming in last year's season opener at Citi Field. "I thought about last year a lot, the first game of the season last year. It didn't sit well with me. I wanted to go out there and make sure I competed a lot better than that, and I did."
Willie Harris had a leadoff double in the seventh for New York's first hit off Johnson (1-0). Carlos Beltran lined an RBI double and Ike Davis knocked in another run with a groundout off Johnson for the Mets, who had only one returner from their 2010 opening day lineup -- third baseman David Wright.
Johnson allowed three hits and two runs in the seventh, leaving with two outs and getting an ovation from the crowd of 41,237, Florida's largest since a visit by the Yankees in June 2009.
He struck out three and walked two in 6 2/3 innings.
"He was pretty good tonight," Mets manager Terry Collins said. "When we got behind, he's pretty tough to catch up against. You don't get that many good pitches to hit."
Mike Pelfrey (0-1) gave up five runs, four hits and four walks in 4 1/3 innings for the Mets, who saw their streak of five straight opening-day wins snapped.
Pelfrey loaded the bases with one out in the fourth by walking Mike Stanton and Morrison and giving up a double to Sanchez. Pelfrey quickly got a two-strike count on Buck, but made a mistake with a 2-2 offering.
Buck -- an All-Star for Toronto last year who got an $18 million, three-year deal from Florida in November -- drove a fly ball the opposite way to right-center, clearing the wall for his third career grand slam. It was the fourth opening-day slam in Marlins history, and brought a curtain call that lasted more than a minute before the catcher finally emerged to acknowledge the crowd.
Buck thought he didn't get enough to hit it out.
"I thought I missed it," he said. "I thought it was going to be a deep fly ball."
The Mets likely hoped the same. They gave up a major league-high 12 slams in 2010, and were the only team not to hit one.
The way they fare against Johnson, it hardly mattered. He has faced the Mets 13 times and compiled a 2.73 ERA.
"We ran up against a good pitcher tonight," Harris said. "You've got to tip your hat to the guy. He pitched extremely well. He had all of his pitches working. That's big J.J. He knows what he's doing out there."
One of the major offseason concerns for the Marlins was infield defense, which marked one of the reasons why the team wanted Omar Infante in the deal that sent second baseman Dan Uggla to Atlanta.
It paid a dividend on the season's first batter.
Mets leadoff man Jose Reyes hit a chopper that Infante barehanded before throwing over to first for the season's initial out. And in the third, Infante robbed Reyes again, this time ranging to his right to snare a grounder.
Josh Thole had a chance for the Mets' first hit in the sixth, but his grounder up the middle was fielded by shortstop Hanley Ramirez, who spun and threw easily for the out. But in the seventh, Harris' double was clean, ending Johnson's bid to join Bob Feller in one of baseball's most exclusive clubs -- the one for those throwing opening-day no-hitters.
Feller had baseball's only one of those in 1940.
"Solid defense and clutch hitting," Marlins manager Edwin Rodriguez said. "Can't ask for anything more than that. I think we showed what we're capable of doing."
Stanton left after five innings with left hamstring tightness. ... The Mets fell to 32-18 on opening day. ... Rodriguez was participating in his first opening day in the majors after more than three decades in baseball. ... Mets 2B Brad Emaus made his big league debut. "Take a deep breath," Collins said when asked for his pregame word to the rookie. ... Johnson was charged with his second career balk. His first came June 22, 2006, against Toronto, with Roy Halladay batting.