It was the Braves who looked frustrated Sunday.
"That's a really good team that's had our number the last year and a half, two years. This is a step in the right direction," a cautious Ryan Zimmerman said. "I really don't think they're going anywhere. We're going to have to continue to play well against them."
The Nationals improved to 3-7 against Atlanta this season and 9-20 since the beginning of 2013.
Roark (7-4) went 5 1-3 innings, allowing a run and four hits as Washington increased its division lead over the Braves to 1 1/2 games.
"He wasn't throwing it exactly where he wanted to, but he was able to work through it." Manager Matt Williams said. "He wanted to stay in the game when I went and got him."
Craig Stammen came on to end a sixth-inning Braves rally, Tyler Clippard pitched the eighth and Rafael Soriano the ninth for his 17th save. Washington relievers retired all 11 batters they faced, lowering their bullpen's major league-best ERA to 2.50.
"You know what, it's funny, baseball is," Atlanta manager Fredi Gonzalez said. "If we would've lost the first two games and won the last two games you'd be feeling pretty good about yourselves. It didn't happen that way, it happened the other way, so you're not feeling real good about yourself."
Ervin Santana (5-5) went six innings, giving up three runs and six hits. He walked one and struck out nine.
With Washington leading 3-0, the first two Braves reached against Roark in the sixth. Williams visited the mound but left Roark in to face Jason Heyward. Roark got Heyward on a fly to right, but Justin Upton singled home Freddie Freeman to make 3-1, ending Roark's afternoon.
Stammen came on to pitch to Johnson, who attempted to check his swing on a 1-2 pitch. Nationals catcher Sandy Leon appealed the ball call, and first base umpire Tim Welke ruled Johnson had gone around for strike three.
Johnson immediately began yelling and gesturing at Welke and was ejected by home plate umpire Mark Carlson. Stammen retired Andrelton Simmons to end the inning.
Roark walked three and struck out three.
"I know they like to swing early," he said. "They like fastballs. I had a feel for the slider in the bullpen (and) I threw it a lot."
Washington got to Santana in the first, getting and RBI single from LaRoche that deflected off diving shortstop Simmons' glove. Ryan Zimmerman had a sacrifice fly to make it 2-0.
Atlanta threatened in the third. With one out, LaRoche misplayed Freeman's grounder down the first base line for a two-base error. But Roark got Gattis on a grounder to third, and, after Heyward walked, Justin Upton hit into a fielder's choice.
"We did a good job of getting Roark's pitch count today," Freeman said. "I feel like we just missed some. I know I just missed a couple. Just a little off the barrel today."
The Nationals made it 3-0 the fifth.
Sandy Leon opened with a single and Roark sacrificed him to second. Span then lined a double to left, scoring Leon.
Nationals C Wilson Ramos (left hamstring strain) went 1 for 3 with a homer and three RBIs in his first rehab game with Double-A Harrisburg Saturday night. He's expected to rejoin the Nationals this week. ... Freeman began the day as one of only three NL players to start all of their team's games, along with Starlin Castro (Cubs) and Hunter Pence (Giants). ... Atlanta is off Monday before opening a 3-game series Tuesday in Houston. ... Gio Gonzalez (3-4, 4.85) opposes Matt Garza (4-4, 4.02) Monday when Washington opens a 3-game series at Milwaukee.