Moyer's win came 20 years and two days after the only other time he beat the Braves. On May 23, 1987, Moyer earned the win in relief as the Cubs beat the Braves in Chicago.
The 44-year-old Moyer had never won in Atlanta and had lost six straight decisions to the Braves before giving up five hits and three runs, two earned, in seven innings.
"It was just a matter of keeping the ball down, throwing strikes and utilizing my defense," Moyer said.
Moyer (5-3) walked one and had four strikeouts.
"He's still throwing that slop up there," said Braves starter Tim Hudson. "But it's tough to hit."
Added Atlanta's Chris Woodward: "You watch him from the side, it looks easy. Once you get in there you realize how much his ball moves."
Howard was 1-for-4 with a walk and the two-run double off Tyler Yates in his return from the disabled list. The double drove in Jimmy Rollins, who scored three runs, and Shane Victorino, who had three hits.
"Throughout my career, when you see a guy like him in the lineup, it gives you a good feeling," said Moyer of Howard. "Knowing the kind of year he had last year and his potential, it's comforting having him in the lineup."
Howard had been out since May 10 with a strained left quadriceps.
"He swung the bat well," said Phillies manager Charlie Manuel. "He was a little more patient than the last time."
Howard was hitting only .204 when he went on the disabled list.
"It felt good to be able to come out and have good at-bats," Howard said. "I felt completely confident, the way we have been playing."
Braves shortstop Edgar Renteria and manager Bobby Cox were ejected in the fourth inning by home plate umpire Paul Emmel. Renteria was unusually forceful in arguing a called third strike. Cox joined the argument and was tossed.
The ejection was the 129th of Cox's career and his fourth of the season. He is only two behind John McGraw's record of 131.
"That's a good umpire," Cox said of Emmel. "The pitch was close. We just wanted the same call."
Hudson (5-3) threw 122 pitches while giving up 10 hits and five runs in 6 2/3 innings. He issued three walks -- two intentional -- and had three strikeouts.
"It seemed like I was working out of jams most of the night," Hudson said.
Moyer led 3-1 before a throwing error by Howard helped the Braves pull even in the sixth inning.
With Kelly Johnson on third base and Martin Prado on second, Jeff Francoeur hit a one-out grounder to third baseman Greg Dobbs. As Dobbs threw to Howard at first base, Prado broke for third and Johnson ran for home. Howard's throw to the plate was wild, allowing Prado to follow Johnson across the plate for a 3-3 tie.
Francoeur was awarded one RBI on the play.
Rollins doubled and scored on groundouts by Chase Utley in the first and third innings. Victorino added a run-scoring single in the third, driving in Moyer following the first of his two singles.
Jayson Werth hit a pinch-hit homer in the ninth for the Phillies.
Left-hander Michael Zagurski, called up from Double-A Reading earlier in the day, pitched a scoreless eighth inning in relief of Moyer.
- Hudson has given up a combined 11 earned runs in two straight losses.
- 3B Martin Prado filled in for Chipper Jones for the second straight game after Jones had a cortisone shot in his sore right thumb.
- Cox was denied his 2,200th win.