PHILADELPHIA -- Ryan Howard used his legs to produce a pair of runs. Then he drove a couple home in typical fashion.
The not-so-fleet Howard drove in the first run by hustling down the line and avoiding a double play on a grounder to second with runners at first and third in the first inning.
He raced home from second to score the second run on Jayson Werth's single in the third.
"Sometimes they underestimate the speed," Howard joked.
Moyer (10-8) allowed one run and five hits in six innings, and also had an RBI double.
Hanley Ramirez lined the first pitch of the game into the left-field seats for his 20th homer, but Moyer settled in nicely after walking the next two batters.
Unfazed by the humidity on a hot evening, the 44-year-old left-hander retired 13 straight batters at one point and won his third straight decision. Moyer improved to 6-0 in six career starts against Florida.
"That's going to change at some point," Moyer said of his success against the Marlins. "The odds are in their favor."
The Phillies closed within four games of the NL East-leading New York Mets.
A five-run third-inning against Rick VandenHurk (3-3) put Philadelphia ahead 6-1.
Werth started the scoring with an RBI single to right field. Carlos Ruiz singled in a run, Abraham Nunez had an RBI double and VandenHurk balked one home to make it 5-1.
Moyer then slapped a double over a drawn-in infield down the left-field line to drive in Nunez, giving the Phillies a 6-1 lead.
"From the start of the game, I didn't have my control," VandenHurk said. "That inning, I got behind in the count and they hit it good. The next thing I know, I had (thrown) a lot of pitches and we're behind by 6-1 and that was it."
VandenHurk gave up six runs, five hits and walked five in 2 1/3 innings.
J.D. Durbin pitched the final three innings for his first career save.
Howard hit a 431-foot shot to left-center in the fourth off Carlos Martinez, and Aaron Rowand followed with his 17th homer of the season.
Howard connected for his 32nd homer against Mauro Zarate in the sixth. The reigning NL MVP finished the game first in the NL with 93 RBI and second in homers, even though he spent time on the disabled list earlier this year.
"I'm just trying to be consistent," Howard said.
The Phillies are 7-4 since losing All-Star second baseman Chase Utley to a hand injury.