MIAMI - Shelby Miller's no-hit bid ended with two outs in the ninth inning Sunday when Justin Bour singled sharply up the middle, and the Atlanta Braves right-hander pitched a two-hitter in a 6-0 win over the Miami Marlins that completed a three-game sweep.

Miller retired the first two batters in the ninth before Bour singled on the first pitch, a 95-mph fastball. Dee Gordon then reached on an infield single before Martin Prado popped out to end the game.

Bour's hit came on the 89th pitch by Miller, who had retired 22 batters in a row. As the ball bounded into centre field, Miller briefly looked toward the sky — actually toward the closed retractable roof at Marlins Park.

The crowd of 23,075 gave the visiting pitcher a standing ovation.

Miller benefited from an early replay reversal to flirt with what would have been the first no-hitter for the Braves in 21 years. The reversal erased an infield single by pitcher Henderson Alvarez in the third inning.

Miller walked one, but that runner was erased on a double play, and the right-hander faced the minimum 24 batters in the first eight innings. He threw a first-pitch strike to 26 of 29 batters and finished with 94 pitches, 70 for strikes, en route to the third complete game of his career.

Miller (5-1) even shut down major league RBIs leader Giancarlo Stanton, who went 0 for 3 after hitting long homers in each of the previous two games.

Left fielder Todd Cunningham caught a drive by Stanton a step from the wall to end the seventh. That was the Marlins' hardest-hit ball.

He came into the game tied for second in the majors in ERA and lowered it to 1.33.

The Braves haven't had a no-hitter since Kent Mercker threw one to beat the Dodgers 6-0 on April 8, 1994. There hasn't been a no-hitter in the majors this year.

Alvarez nearly broke up Miller's bid in the third when he was ruled safe trying to beat out a soft grounder to short. Following a review that took three minutes and five seconds, the call was reversed to end the inning and erase the hit.

Replays on the video scoreboard appeared inconclusive, and the crowd booed the reversal, but the Marlins didn't argue. Earlier in the third, third baseman Phil Gosselin made a diving backhanded stop in the third to rob Adeiny Hechavarria of a hit.

By then it was clear Miller had excellent stuff. He struck out Stanton to end the fourth on three pitches, the last of which was a 97-mph fastball.

Atlanta gave Miller a big cushion early with five runs in the second off Alvarez (0-3), pitching for the first time since April 12. The Marlins' opening day starter had been sidelined with shoulder and elbow inflammation.

Miller walked Marcell Ozuna on a 3-2 pitch to start the second, but the runner was erased on a double play.

The Braves' sweep was their first since they won three in a row in Miami to start the season. They're 25-9 at Marlins Park, which opened in 2012.

Alvarez retired the side in order in the first inning but gave up five runs in the second on six hits, including an RBI double by A.J. Pierzynski and a two-run, two-out single by Jace Peterson.

Cameron Maybin singled home a run in the sixth.

Alvarez allowed six runs in 5 1/3 innings.

TRAINER'S ROOM

Braves: Gosselin left in the fourth inning with a sprained left thumb.

Marlins: RHP Mat Latos walked with a limp Sunday, one day after suffering a bruised left shin when he was hit by a line drive that forced him from the game. Manager Mike Redmond said he anticipates Latos won't miss a start.

"It looks like he's going to be fine," Redmond said. "We dodged a bullet."

UP NEXT

RHP Mike Foltynewicz (2-0, 4.24) is scheduled to start Tuesday for the Braves when they begin a two-game series at home against Tampa Bay.

RHP Dan Haren (4-2, 3.70) is scheduled to start Monday for the Marlins when they open a four-game series against Arizona and Rubby De La Rosa (4-2, 4.50).