The 45-year-old left-hander beat Florida for the 10th time in as many career starts, pitching six innings Friday night to help the Philadelphia Phillies to a 4-2 victory.
All of Moyer's games against the Marlins have come in the past three years. He defeated them for the third time since June 1, and his ERA in five lifetime starts in Miami is 1.34.
"I don't know how he does it at 45 years old," said Florida's Cody Ross, who went 0-for-3 to end a career-best 17-game hitting streak. "You see his 82 mph fastball, and it looks good to hit. But it's never down the center of the plate."
Philadelphia's Ryan Howard hit his 29th home run, most in the majors. Geoff Jenkins added his eighth homer and singled home a run for the Phils, who took over sole possession of first place in NL East with the New York Mets' defeat.
Moyer (9-6) outpitched Ricky Nolasco (10-5) and foiled the Marlins' bid to tighten the division race. Florida began the night 1½ games behind the Phillies and Mets.
"We just have to take care of our own business," Moyer said.
The Marlins lead the majors in home runs, but their four hits off Moyer were all singles. He took a no-hitter into the sixth inning in Miami last month, and this time he retired the first nine batters as the Phillies built a 4-0 lead.
"He's such a good pitcher, sometimes he can use a team's aggressiveness against them," said Brad Lidge, who completed Philadelphia's five-hitter with a perfect ninth. "Florida has a very aggressive team -- they hit a lot of home runs. Jamie's style matches up good against them. He's such a master of what he's doing, he can see what they're swinging at and move it a couple of inches."
Florida almost managed a breakthrough off Moyer in the fourth. Hanley Ramirez walked to start the inning and came around on singles by Jeremy Hermida and Jorge Cantu. Mike Jacobs singled to load the bases with no outs.
Moyer, who rarely topped 80 mph on the scoreboard radar gun, declined to offer an explanation for his domination of the Marlins.
"I've been asked this same question many times," he said. "I don't have an answer. They're all good hitters. They give you good at-bats. They battle. ... It's a matter of making pitches."
Moyer departed for a pinch-hitter after throwing 100 pitches. Lidge, the Phils' third reliever, earned his 21st save in as many chances.
Phillies manager Charlie Manuel was ejected in the fifth inning by plate umpire Jim Joyce for arguing that Shane Victorino had been hit by a pitch.
Nolasco lost for the first time in his past six decisions. He pitched seven innings and allowed the Phils four runs, including both homers.
"You make a mistake against them, and they're going to make you pay," Nolasco said. "I left some pitches up, and you cannot do that against their hitters."
There were no long balls against Moyer, who became the first pitcher to sweep his first 10 starts against a team since Pedro Martinez won his first 12 against Seattle from 1998 to 2004.
The Marlins aren't the only team keeping Moyer in the majors: He has allowed fewer than four earned runs in his past eight starts.
But Florida's futility against him seems chronic. Willingham 1-for-18 against Moyer, Uggla is 2-for-24 and Ross is 3-for-25.
"He has our number," Jacobs said. "We're going to face him a few more times this year. We have to find a way to turn the tables on him."
- Marlins 2B Uggla, who made a record three errors in the All-Star game, earned big cheers when he fielded routine grounders to retire the first two batters.
- The Phils' Pedro Feliz went 0-for-4 with four strikeouts.
- Heavy rain emptied the stadium briefly in the third inning, but play continued.