ATLANTA -- The Miami Marlins may have found the answer to Atlanta closer Craig Kimbrel.

The Marlins scored a ninth-inning run in an unusual manner against Atlanta's All-Star closer on Thursday, and they came away with a 3-2, come-from-behind win over the Braves. Miami earned three victories in the four-game series.

"Two wild pitches and a knock. We'll take it," Miami manager Mike Redmond said. "This has been a tough place for us to play. We made some mistakes, but we kept fighting and giving great effort."

Miami's winning rally began innocently. In a 2-2 game, Kimbrel started the ninth by striking out first baseman Garrett Jones and followed with a strikeout of Marcell Ozuna, but the Marlins center fielder was able to take first base when the ball bounced away from catcher Evan Gattis.

Ozuna advanced to second base on Kimbrel's second wild pitch of the inning and scored on catcher Jarrod Saltalamacchia's one-out single to center field. Ozuna slid in a step ahead of an accurate throw from B.J. Upton.

"Kimbrel's the best closer in the game," said Miami closer Steve Cishek, who pitched a scoreless ninth for his 24th save. "We could have had him the first night, too. Maybe we've got his number a little."

Kimbrel (0-2) allowed two walks and a hit in one inning on Monday, but he did not allow a run. The run he permitted Thursday was the first against him since June 20.

"We caught some breaks, but we made him throw a lot of pitches," Redmond said.

Miami starter Henderson Alvarez (7-5) pitched eight innings, his longest appearance since June 6. He allowed a two-run homer to third baseman Chris Johnson in the second inning and twice escaped after allowing a runner to reach second base with one out.

Alvarez allowed two runs on six hits and one walk and struck out four. He retired the final 10 batters he faced.

"He was very good," Braves manager Fredi Gonzalez said. "The only ball he made a mistake on was the to C.J. Otherwise, he was dominant."

Atlanta starter Aaron Harang allowed two runs, seven hits and two walks with five strikeouts in seven innings. It was his team-leading 18th quality start and second straight start without a decision.

"He deserved better," Gonzalez said. "We just didn't give him any run support."

The Braves jumped on top in the second inning thanks to Johnson's eighth home run of the season. It was only the eighth homer allowed this year by Alvarez, who had a streak of 68 1/3 innings without allowing a home run earlier this season.

The Marlins tied the score with two runs in the fifth inning against Harang, which broke a streak of 14 consecutive scoreless innings by the right-hander.

Shortstop Adeiny Hechavarria singled home Ozuna, who led off with a walk and took third on a double by Saltalamacchia. Left fielder Christian Yelich got the other run home with a grounder to second that the Braves could not convert into a double play.

Saltalamacchia went 3-for-4 with two doubles. It was his third multi-hit game of the year against the Braves, the team that drafted and signed him in 2003.

"Salty had a couple of big hits for us," Redmond said.

"We have a lot of confidence in Salty," Cishek said.

It was another frustrating night for the Atlanta offense. The Braves were 0-for-3 with runners in scoring position and left three runners on base. Left fielder Justin Upton got three of Atlanta's six hits.

"We've got to start hitting the ball and we'll be all right," Gonzalez said.

NOTES: A storm blew through downtown Atlanta about 90 minutes before the game. It rained for about 30 minutes and the grounds crew was able to get the field prepared in time for the first pitch at 7:10 p.m. EDT. ... Atlanta will start LHP Alex Wood (7-7) in the opener of a four-game series with San Diego on Friday. RHP Jesse Hahn (5-2) will start for the Padres. ... Miami visits Houston for a three-game series, with LHP Brad Hand (1-2) going against Astros LHP Dallas Keuchel (9-6) on Friday. ... Atlanta SS Andrelton Simmons was given the night off and was replaced by Ramiro Pena. Simmons started 96 of the first 101 games. ... The Marlins successfully challenged a call in the sixth inning. First base umpire Rob Drake ruled that Atlanta LF Justin Upton got back to the bag safely on a line drive hit by RF Jason Heyward. However, the replay showed that SS Adeiny Hechavarria's throw beat the diving Upton.