Cincinnati pitcher Johnny Cueto extended his strong start to the season by going eight innings in the Reds' 6-2 win over majors-leading Milwaukee.
Among other games, San Francisco beat slumping Atlanta in a clash of divisional leaders, Colorado came back from a six-run deficit to edge the New York Mets, and the Los Angeles Dodgers beat Miami despite giving up three home runs.
Cincinnati's Cueto (3-2) gave up just three hits and one walk while striking out 10 batters over eight innings.
He became the first Reds pitcher to throw at least seven innings in each of his first seven starts in a season since Bucky Walters in 1944 Ryan Ludwick singled home a run, and Brayan Pena drove in two more with a single in a three-run fourth.
Brewers' starter Yovani Gallardo (2-1) gave up four runs in six innings.
San Francisco's Brandon Belt, Buster Posey and Michael Morse each led off innings with home runs and that was enough for the Giants to win 3-1 at Atlanta.
Dodgers down Marlins
There was drama in Miami, where Los Angeles pinch-hitter Carl Crawford hit a two-run homer in the 11th inning to give the Dodgers a 9-7 win.
The Marlins lost even though they tied a franchise record at Marlins Park with three home runs.
They erased a 7-2 sixth-inning deficit but left the bases loaded in the eighth and ninth, and left two runners on in the 10th.
Juan Uribe walked to start the 11th against Carlos Marmol (0-2), and with one out Crawford hit his first homer of the season.
He had been left out of the starting lineup because he was hitting .185.
The National League West-leading Giants have won eight of nine whereas the Braves, who lead the NL East, have lost five straight for the first time in two years.
San Francisco have homered in 10 straight games, a feat they previously accomplished in 2010.
The Mets had weathered an eight-run fifth inning by Colorado, that included Nolan Arenado's grand slam, and took a 10-9 lead on Juan Lagares' RBI single in the ninth inning off LaTroy Hawkins (1-0).