The Braves broke open a tie game in the top of the ninth with four runs — all with two outs. Brian McCann and Johnson had RBI singles, and Andrelton Simmons followed with a two-run double.
Freddie Freeman earlier hit a three-run homer for Atlanta.
David Carpenter (4-1) pitched a scoreless eighth to get the win. Kevin Gregg (2-5) took the loss for the Cubs, who wasted three home runs.
Atlanta starter Paul Maholm, twice staked to a four-run lead, allowed eight hits and four runs in 5 1-3 innings. Chicago's Scott Baker allowed five runs and four hits in four innings.
CARDINALS 7, BREWERS 6, 10 innings
MILWAUKEE (AP) — Carlos Beltran's 10th-inning sacrifice fly kept St. Louis in sole possession of first place in the NL Central.
The Cardinals hold a two-game lead over Cincinnati and Pittsburgh. The Reds downed the Pirates 6-5 in 10 innings to move into a tie for second place.
Former Brewers closer John Axford (7-7 ) picked up the win, while Carlos Martinez got his first save of the year for the Cardinals.
Beltran's fly ball to deep right field off Michael Blazek (0-1) scored Kolten Wong, who led off the 10th with a walk.
Matt Adams smacked a towering two-run homer in the ninth to give the Cardinals a 6-4 lead, but the Brewers rallied for two runs in the bottom of the inning to tie the game.
Aramis Ramirez hit a three-run home run for the Brewers while Norichika Aoki had four hits, a walk and three runs.
REDS 6, PIRATES 5, 10 innings
PITTSBURGH (AP) — Joey Votto homered off Kyle Farnsworth in the 10th inning for Cincinnati, which got three unearned runs in the ninth to tie the game and pulled even with Pittsburgh for the top wild-card spot in the National League.
Cincinnati pushed across the three runs off closer Mark Melancon to tie it and Votto won it an inning later with his 24th homer.
JJ Hoover (5-5) earned the win for the Reds, who have won four straight. Aroldis Chapman worked the 10th for his 38th save.
Farnsworth (1-1) retired Brandon Phillips to start the 10th but left fielder Starling Marte couldn't quite grab Votto's shot down the line.
Francisco Liriano overwhelmed the Reds, allowing two runs and three hits, walking three and striking out seven. The left-hander needed only 94 pitches to record 24 outs, but was pulled in the ninth for Melancon, who has been outstanding most of the season but was coming off a blown save in a 3-2 loss to San Diego on Wednesday.
NATIONALS 8, MARLINS 0
WASHINGTON (AP) — Jordan Zimmermann pitched a two-hitter and picked up his NL-leading 19th win for barely-still-alive Washington.
Zimmermann (19-8) took a no-hitter into the sixth inning, struck out nine and faced only three batters above the minimum. He passed the 200-inning mark for the season and lowered his ERA to 3.18 for the Nationals, who have essentially hit must-win mode in their late push for the playoffs.
The Nationals trail Cincinnati and Pittsburgh by five games with nine to play for the NL's second wild card berth.
Zimmermann had a one-hitter this season, on April 26 in a 1-0 win over the Reds.
After hovering near .500 for most of the season, the defending NL East champs have won 12 of 14 and 29 of 40.
The Nationals sent 11 batters to the plate in a seven-run sixth against Marlins starter Jacob Turner (3-8) and reliever Chris Hatcher.
METS 6, PHILLIES 4
PHILADELPHIA (AP) — David Wright homered in his return to New York's lineup, Daniel Murphy had three hits and Daisuke Matsuzaka earned his second straight victory.
Eric Young Jr. singled, doubled and drove in a run for the Mets, who have won four of seven.
Darin Ruf doubled and drove in two runs for Philadelphia, which has lost four of seven.
LaTroy Hawkins pitched a scoreless ninth for his 11th save in 14 opportunities.
The Mets jumped on Cole Hamels (8-14) for three runs in the first.
The homer moved Wright past Mike Piazza into second on the club's career list with 221 homers. Darryl Strawberry is No. 1 with 252.
Matsuzaka (2-3) pitched six innings, allowing four runs and four hits with six strikeouts and three walks.
Hamels, who lost for the first time since July 26, left after seven subpar innings, giving up six runs and 10 hits with eight strikeouts and no walks.
ROCKIES 9, DIAMONDBACKS 4
DENVER (AP) — Colorado's Jhoulys Chacin tossed six shaky innings and helped himself with his first career home run.
Troy Tulowitzki, Charlie Blackmon and Corey Dickerson also went deep for the Rockies.
Paul Goldschmidt hit his NL-leading 35th homer and drove in two runs and A.J. Pollock homered for Arizona.
The Diamondbacks were playing a day after the Los Angeles Dodgers clinched the NL West in Phoenix.
Blackmon greeted reliever Tony Sipp (3-2) with his fifth home run to lead off the sixth. Josh Rutledge singled and Dickerson hit his fourth homer to make it 5-2.
Goldschmidt homered off Mitchell Boggs in the seventh to make it 6-3.
Chacin (14-9) worked out of trouble all game in part because of five walks. He only allowed two runs and was able to pitch his way out of jams to earn his first win in three weeks.
PADRES 2, DODGERS 1
SAN DIEGO (AP) — Robbie Erlin allowed four hits over 7 2-3 innings and fellow rookie Jedd Gyorko hit his 20th homer to lead San Diego.
The Dodgers, fresh from clinching the NL West title on Thursday at Arizona, let their backups get the playing time. No Dodgers regulars were in the starting lineup after they secured their 12th NL West championship since divisional play started in 1969.
Erlin (3-3) matched his career-high with seven strikeouts as only three Dodgers reached second base against him.
Gyorko homered in the fifth inning, becoming the fifth rookie second baseman ever to reach that milestone. Gyorko gave the Padres a 2-0 lead when he hit a fastball from Edinson Volquez (9-12) 417 feet to centre field.
Gyorko, who had two RBIs, is the first second baseman to hit 20 homers in franchise history.
Huston Street worked the ninth to notch his 32nd save in 33 chances. The Dodgers had runners on first and third in the ninth but Street struck out pinch-hitters Yasiel Puig and Matt Kemp.