Josh Johnson’s no-hit bid ended in the seventh inning when Carlos Beltran doubled to score Willie Harris at Sun Life Stadium in Miami.
Buck’s grand slam gave the Marlins a 4-0 lead, followed by Gaby Sanchez’s scoring single in the fifth.
Ike Davis grounded out to second, sending Beltran home to close the gap to 5-2.
Logan Morrison ended the Marlins’ scoring with a home run in the eighth inning.
Johnson pitched 6 2/3 innings, giving up three hits and two runs and striking out three. Mike Pelfrey went 4 1/3 innings, allowing four hits and five runs and striking out two.
At Citizens Bank Park in Philadelphia, the Phillies hit six ninth-inning singles to score three runs for the win.
Phillies pinch-hitter John Mayberry Jr.’s one-out bases- loaded hit over the head of Astros center fielder Michael Bourn was the game-winner, spoiling Houston starter Brett Myers’s performance.
Myers, who pitched for the Phillies from 2002-2009, gave up two runs on three hits in seven innings. Reigning National League Cy Young Award winner Roy Halladay, who went 21-10 last season, allowed one run on five hits while striking out six in six innings.
Danys Baez pitched one inning to earn the win for Philadelphia.
In other American League games yesterday, it was the Chicago White Sox 15, Cleveland 10; Texas 9, Boston 5; Baltimore 4, Tampa Bay 1; Kansas City 2, Los Angeles Angels 1; Toronto 13, Minnesota 3; and Seattle 6, Oakland 2.
In the National League, it was Pittsburgh 6, Chicago Cubs 3; Arizona 7, Colorado 6 (11 innings); and Los Angeles Dodgers 4, San Francisco Giants 3.
To contact the editor responsible for this story: Michael Sillup at email@example.com.