Duvall’s single off Tyler Rogers drove in William Contreras from second base.
The Giants wasted another strong start by Carlos Rodón, who allowed only three hits and one run in seven innings.
Jake McGee (1-2) blew a 3-1 lead, built on homers by Mike Yastrzemski and Darin Ruf, by allowing three runs in the ninth. McGee was brought in to close out the lead because Camilo Doval had pitched back-to-back games.
Dansby Swanson led off the ninth with a homer off McGee to cut San Francisco’s lead to one run. Marcell Ozuna followed with a single to right field and moved to second on Matt Olson’s fly ball to deep center field.
Contreras added a single to left field to drive in Ozuna for a 3-3 tie. Right-hander Tyler Rogers struck out Orlando Arcia as Contreras stole second base. The steal proved to be crucial when Duval followed with the game-ending single.
Rodón was dominant in his first career appearance against Atlanta, allowing one run with 10 strikeouts and one walk.
Rodón outpitched Charlie Morton, who allowed two runs on three hits with 11 strikeouts in seven innings.
Rodón’s bid for his third consecutive start without allowing a run ended in the seventh. He has allowed only a combined seven hits and one run over 21 innings while winning three consecutive starts.
Ozuna singled to open the inning for Atlanta’s second hit. Ozuna scored on Olson’s double to the center field wall. Olson’s hit, which trimmed San Francisco’s lead to 2-1, ended Rodón’s string of 21 consecutive scoreless innings.
The 29-year-old Rodón gave up a second-inning walk to Contreras, but allowed no other baserunners before Arcia’s bloop single to center field with one out in the fifth gave the Braves their first hit.
Tommy La Stella’s run-scoring single off A.J. Minter (3-1) in the ninth drove in Ruf to add to the Giants’ lead.
Giants: SS Brandon Crawford (left knee contusion) did not start but tests Wednesday showed no structural damage after he banged his knee on a slide at home plate Tuesday night. “There is some optimism he can start (Thursday),” said manager Gabe Kapler, who said Crawford was feeling better. … RF Luis González was held out with tightness in his lower back. González was in Kapler’s original lineup before González said his back felt “a little tight” according to Kapler. The manager said he doesn’t believe the injury is reason for “long-term concerns.”
Braves: 3B Austin Riley did not start after manager Brian Snitker said “he got banged up a little” in Tuesday night’s game. Riley struck out in the eighth as a pinch-hitter and remained in the game. … OF Eddie Rosario (blurred vision, swollen right retina) and LHP Tyler Matzek (left shoulder inflammation) are moving closer to rehabilitation assignments. A decision on Matzek come come after he is checked by the medical staff on Thursday after throwing on the side on Wednesday.
Braves RHP Kyle Wright (7-4, 2.94 ERA) will make his first career start against San Francisco when he faces Giants LHP Alex Wood (5-5, 4.32) as the four-game series concludes on Thursday. Wood began his career with Atlanta and is 3-3 with a 3.89 ERA in seven career starts against the Braves.
More AP MLB: https://apnews.com/hub/MLB and https://twitter.com/AP_Sports