The Reds' wildly inconsistent offense finally came through for its No. 1 starter.
Harang (2-5) hadn't won since April 10 despite one solid performance after another. The Reds scored two runs or less in half of his first eight starts, the main reason that ugly record accompanies his 3.32 ERA.
"I never lost faith," Harang said. "I know we can score runs. It just seemed like a dry spell. We put it together one day and not the next, and they seemed to fall on my days. They kept coming around and saying, 'Don't worry. We'll put some runs together. Just keep doing what you're doing.'"
The Marlins arrived with a seven-game winning streak and the best record in the majors. Things looked good early, when they piled up three solo homers off Harang, including another by Dan Uggla.
Keppinger, the Reds' most consistent hitter, snapped a 4-all tie with his homer off Taylor Tankersley (0-1), who came in to start the seventh. Phillips also connected for his seventh homer, providing two more runs that turned out to be just enough.
The Reds hadn't scored more than five runs in any game behind Harang, who gave up four runs and seven hits in seven innings before turning his rare lead over to the bullpen. It nearly slipped away in a wacky eighth inning.
"This game's crazy," Phillips said. "Just when you think things are looking up, crazy things happen."
After Luis Gonzalez singled home a run in the eighth, cutting it to 8-5, closer Francisco Cordero came on and hit Wes Helms to load the bases with two outs. Ken Griffey Jr. dropped Mike Rabelo's fly ball to shallow right field for an error that let in two more runs.
"I've never seen him do it before," manager Dusty Baker said. "That's a first for me. It shows it can happen to anybody. He's as sure-handed a man as you're going to find."
A walk loaded the bases again, raising the Reds' tension level. Griffey bobbled Alfredo Amezaga's fly to the warning track before grabbing it with his bare hand for the last out of the inning.
"The ball hit off his (glove) heel and he had the concentration to catch it," Gonzalez said. "Other outfielders don't make that play when the ball hits the heel, but Griffey is Griffey."
Cordero pitched a perfect ninth for his sixth save in as many chances. The Reds are the only team in the majors without a blown save.
The homer has figured prominently in the best start in Marlins history. Harang already knew what the Marlins could do -- he gave up five homers in his last two starts against them.
Make it eight homers in his last three.
Jeremy Hermida and Hanley Ramirez hit back-to-back homers in the first inning, and Uggla connected in the fourth for a 3-0 lead. It was Uggla's fourth homer in his last three games -- one was a grand slam -- and his eighth in 10 games.
Uggla has 12 homers overall after hitting a career-high 31 last season.
Right-hander Burke Badenhop gave up four runs in six innings, leaving with the score tied at 4. A throwing error by third baseman Jorge Cantu let in a run in the fifth, and Badenhop's wild pitch let in another with Harang at the plate and two outs in the sixth.
"Very frustrating," Badenhop said. "You get in that situation, and you completely yank a fastball (into the dirt). Very disappointing."
- Florida OF Josh Willingham hit soft-toss pitches Monday. Willingham, sidelined by a sore back, is eligible to come off the 15-day DL during the series in Cincinnati, but his return is uncertain.
- RH Bronson Arroyo will start Wednesday for the Reds, going on three days' rest to get the rotation back in order. Arroyo is 1-0 with a 3.05 ERA in three career starts on short rest.
- Slumping OF Adam Dunn was dropped to seventh in the order for the first time since July 8, 2005. He went 0-for-3 with a sacrifice fly.