Howard hit a two-run drive in the sixth and a solo shot in the eighth for his seventh multihomer game this season. The first homer came on a 2-0 count with the Marlins leading 1-0, and the second came with one out.
Both times rookie Scott Olsen threw Howard a fastball.
"Except for a couple of pitches to Ryan, I pitched a good game," Olsen said. "He's got 56 home runs for a reason."
Marlins manager Joe Girardi hinted that he would have preferred for Olsen (12-8) to pitch around Howard.
"We've talked about not letting him beat us," Girardi said. "Ollie made some mistakes to one guy. He's one guy in the league right now you can't afford to make mistakes to. All I'm going to say is we didn't execute the way we were supposed to."
Howard said he was a bit surprised the Marlins pitched to him. Even with 80 walks this season, he's on pace to finish with 64 home runs and 159 RBI.
Manager Charlie Manuel said he projected Howard to hit 30 to 40 homers this year, his second in the big leagues.
"He's going to double the homers," Manuel said. "It's fun watching him. I'd come to the ballpark just to watch him."
Howard is keeping the Phillies in playoff contention, and they've won the first two games in a four-game series between NL wild-card contenders.
"We need to win a couple more," Manuel said. His team began the night 2 ½ games behind wild-card leader San Diego, while Florida trailed by 3 ½ games.
Moyer (2-1), making his 514th start and his first against Florida, allowed five hits and one run and threw only 90 pitches.
Tom Gordon pitched the ninth for his 28th save in 32 chances, and his first since being sidelined Aug. 12 by a strained right shoulder. He gave up a double to Miguel Cabrera and a sacrifice fly to Mike Jacobs.
The game drew a crowd of 21,432, the best of the week for the attendance-challenged Marlins, and it became a pitching duel between the 43-year-old Moyer and the 22-year-old Olsen.
Nursing a 1-0 lead, the Marlins' left-hander limited Philadelphia to two hits until the sixth. Shane Victorino led off with a single, and Howard homered over the scoreboard in left field.
Howard connected against Olsen again in his next at-bat.
"I'm glad he's on my team," Victorino said.
Olsen has given up only one other homer to a left-handed hitter this season. Howard has 15 home runs against lefties, and he has homered in 11 of the past 16 games.
"Amazing," Manuel said.
Is Howard amazing himself?
"A little bit," he said. "But as soon as something like today happens, you try to forget it as soon as possible. You try not to get sucked in by everything that's going on and stay focused on the task at hand, which is trying to get the playoffs."
Florida's first run scored in the second on a single by Wes Helms and a triple by Miguel Olivo. Moyer didn't walk a batter and has walked only three in 27 1/3 innings since joining the Phillies on Aug. 19.
"He doesn't light the radar gun, but he'll get you out," Manuel said. "He takes the sting out of your bat."
Olsen pitched 7 2/3 innings and struck out seven, giving him 147 this season to break Dontrelle Willis' club rookie record of 142 set in 2003.
- Howard has 28 homers since the All-Star break.
- In the past 10 games, Phillies starters have an ERA of 2.69.
- Marlins SS Hanley Ramirez went 0-for-4 and fell to .182 (8-for-44) against the Phillies this season.
- The Phillies have won 15 of their past 22 road games.