The Braves did what they’ve been adept at doing, but their ninth-inning rally against one of baseball’s top closers fell short Monday night in a 4-3 loss to the Cubs that had hearts beating excitedly in a sellout crowd at SunTrust Park.

Jon Lester held the Braves to three hits and one run in seven innings, but the Braves scored twice in the ninth against All-Star Wade Davis before Johan Camargo flied out with bases loaded to end the thrilling opener of a three-game series.

“It was fun,” Braves catcher Tyler Flowers said. “It was close to being real fun.”

The Cubs have won all four of their games since the All-Star break and snapped the Braves’ three-game winning streak to drop Atlanta back below .500 (45-46).

The Braves led the majors with 15 wins in their final at-bat before Monday, when it looked like they might get another in most dramatic fashion. They got two runs in the ninth inning on three consecutive one-out singles from Brandon Phillips, Freddie Freeman and Matt Kemp. A wild pitch scored Phillips and Kemp’s hit scored Freeman.

“It’s great,” Braves manager Brian Snitker said of his team’s never-say-die attitude. “That’s these guys’ M.O. They give you a hard 27 outs, man. We gave ourselves a chance.”

After pinch-runner Lane Adams stole second and advanced to third on Flowers’ fly-out to the center-field warning track, the Cubs intentionally walked pinch-hitter Matt Adams to bring up Sean Rodriguez, who barely checked his swing on a full-count pitch to load the bases before Johan Camargo flied out to shallow left field to end the game.

“Huge walk,” Snitker said of Rodriguez’s final plate appearance, when it looked like he sold the umpire on the checked-swing call by trotting to first base before the ump had a chance to say otherwise. “It couldn’t be set up any better for him to come on to the scene and walk ‘em off. It was a great at-bat by Sean.

“And I felt great with Johan up there. He had a tough at-bat, too. He just missed a couple balls. This was a great ninth inning.”

The Cubs (47-45) had many thousands of their fans among the 41,256 on hand, and there were spirited cheers and jeers when Cubs fans started "Let's go Cubs" chants and Braves fans responded with a chorus of boos.

The Braves' Julio Teheran (7-7) fared better than he has in most home starts, in large part because of two terrific inning-ending defensive plays by first baseman Freeman that probably saved at least four runs, but it wasn't enough on a night when Lester did what he usually does against the Braves.

Lester (8-6) rebounded from the shortest and perhaps start of his career – six hits, 10 runs (four earned) and three walks allowed without getting out of the first inning against Pittsburgh on July 9 – to face 24 batters in seven innings Monday, retiring seven of the first eight and all of the last 10.

He gave up three singles and one walk with six strikeouts and improved to 5-2 with a 2.05 ERA in eight career starts against the Braves including 5-1 with a 1.83 ERA in six starts in Atlanta.

He’s 3-0 with a 0.63 ERA in his past four starts against the Braves, with the run he allowed in the third inning Monday just the second earned run the Braves have mustered against Lester in that stretch. And that run could’ve been unearned. After Teheran hit a one-out single, Ender Inciarte grounded into a fielder’s choice and shortstop Javier Baez’s throw to first was high on the would-be double play.

Inciarte advanced to second on the error, then stole third base – he’s 13 for 13 in stolen-base attempts at third base over two seasons with the Braves – before scoring on Brandon Phillips single to give the Braves a 1-0 lead.

The Cubs didn’t have more than one runner on base through four scoreless innings, but took the lead in the fifth on Ben Zobrist’s two-run single after Teheran walked former Brave Jason Heyward to start the inning and Baez singled. The damage could have been far worse in the inning after Teheran issued consecutive two-wout walks to Anthony Rizzo and Wilson Contreras to load the bases, but Freeman stopped Kyle Schwarber’s scorched ground ball near the first-base line about 15 feet behind the base for the third out.

Freeman made another diving defensive play on the line with two runners in scoring position to end a scoreless fifth.

After those two lengthy innings pushed Teheran’s pitch count to 107, Ian Krol came on to start the seventh inning and gave up a homer to the second batter he faced, Anthony Rizzo, to increase the Cubs’ lead to 3-1. They scored another run in the eighth on doubles from Baez and Addison Russell.

Teheran was charged with five hits, two runs and four walks with five strikeouts in six innings. He avoided giving up a home run at SunTrust for the first time since his win in the April 14 home opener, but couldn’t avoid another home loss. He’s 1-7 with a 7.01 ERA in 10 starts, compared to 6-0 with a 2.53 ERA in nine road starts.