PHILADELPHIA -- Josh Johnson's changeup darted across the plate all night, a sure sign the big right-hander is all the way back after reconstructive elbow surgery a year ago.
The Marlins, who have by far the smallest payroll in the majors, closed within 1½ games of first-place Philadelphia. The New York Mets are two games behind.
Johnson (2-0) allowed five hits and overcame four walks in his fifth start since returning from elbow surgery in August 2007. The Marlins improved to 5-0 in his starts this year.
"My changeup was real good. That's what I've been waiting for," Johnson said.
Jamie Moyer (10-7) fell to 10-1 against the Marlins. The 45-year-old left-hander uncharacteristically struggled with his control. Moyer gave up two runs and six hits in five innings. He walked three and hit two batters.
"It was bound to happen," Moyer said. "I beat myself."
Shane Victorino hit a two-out, two-run homer off Renyel Pinto to cut the deficit in half in the seventh. The Marlins used three pitchers to get through the seventh, and needed five pitchers to get the last nine outs.
The Phillies' bullpen couldn't keep it close. Hermida had an RBI single and a two-run single off J.A. Happ in the last two innings. Happ made his first career relief appearance after three starts.
"Give all the credit to J.J. He kept us in the game," Hermida said of Johnson.
Florida stranded eight runners over the first three innings.
Moyer fell behind Hermida 3-0, before walking him on a 3-2 pitch to force in Florida's first run.
The Marlins added a run in the fourth on Josh Willingham's fielder's choice grounder. Ramirez reached on a bunt single and Hermida was hit by a pitch. Jorge Cantu struck out, but Ramirez stole third base and scored on Willingham's soft grounder to third.
Johnson got some defensive help with two outs and two runners on in the second. Moyer lofted a shallow fly down the left-field line, but a hard-charging Willingham made a headfirst, diving catch to end the inning.
"That was huge. It was a great catch," Johnson said.
Alfredo Amezaga looped a two-run single over third baseman Greg Dobbs' head to give Florida a 4-0 lead in the seventh. Left-hander Les Walrond, making his first appearance in the majors since Oct. 1, 2006, came in with a runner on first and one out. He struck out the first batter he faced and walked two before Amezaga's hit.
"Johnson threw a very good game," Phillies manager Charlie Manuel said. "He has good stuff."
- Moyer became the first Phillies pitcher since Randy Wolf in 2002 to allow three earned runs or fewer in 11 consecutive starts. He's 4-4 with a 2.90 ERA in that span.
- The Phillies drew their 35th sellout in 54 home games.
- The Marlins had a runner thrown out at every base.
- Victorino has eight home runs in the past 18 games.
- Cantu extended his career-high hitting streak to 13 games.
- Gregg has converted his past 10 save opportunities.
- Hermida tied a career high with the four RBI.