Thanks to a delay of 2 hours, 2 minutes in the fourth inning, the game-winning hit came at 1:26 a.m. on Saturday, almost six hours after the first pitch.
"If you're going to stay here until 1:30 you might as well win it," Johnson said.
Schafer led off the 10th with a single to left off Joe Beimel (0-1). He then moved to second on Omar Infante's groundout and scored easily on Johnson's hit to right, sliding across the plate ahead of Elijah Dukes' throw from right field.
Schafer celebrated after the slide, drawing a postgame chuckle from Johnson.
"That was some serious fist-pumping," Johnson said of the rookie.
Jorge Campillo (1-0), Atlanta's eighth pitcher, worked an inning for the win.
Dukes threw out Johnson at the plate in the eighth inning, but the speedy Schafer said he felt confident when he took off from second on Johnson's 10th-inning hit.
"I knew the ball Kelly hit was going to be pretty hard to throw me out," Schafer said. "Kelly came up big-time."
The Nationals fell to 0-4 by stranding 16 baserunners.
"I don't think I've ever seen in my career four times the bases loaded with one out and not be able to score runs," said Washington manager Manny Acta. "We can't blame anybody but ourselves.
"We've just got to continue to fight and we'll come out of it. But it was just tough."
The Nationals were denied after loading the bases in the third, fourth and seventh innings but finally pushed across a run with the bases loaded in the ninth.
"That's something that has to be addressed," said Adam Dunn, who was 1-for-3 with three walks and drove in a run as Washington's cleanup hitter. "We've got to get enough people -- not just players, but coaches -- to address that problem.
"You've got to put an emphasis on it. That's a time when you've got to bear down and have a plan. That's the important time in baseball. It's hard to win without scoring runs. You're not going to get a lot of bases on walks. We're just going to have to work on it."
The Braves' bullpen couldn't hold 4-1 and 5-4 leads.
Neither starting pitcher returned after the delay.
Derek Lowe gave up four hits and a run in three innings, leaving with a 3-1 lead. He struck out six.
Washington's Shairon Martis gave up five hits and three runs in three innings. He got his first major league hit in the third inning.
After the delay, Atlanta stretched the lead to 4-1, but the Nationals rallied to tie it with three runs in the sixth.
Atlanta recovered to score a run off Saul Rivera in the seventh. With two outs, he gave up Brian McCann's third double of the game. After reaching a 3-1 count on Casey Kotchman, Rivera issued an intentional walk, and Francoeur hit his first pitch from Rivera up the middle for an RBI single.
Milledge followed with a grounder up the middle that Mike Gonzalez couldn't stop when reaching behind his back. Instead of making the catch, Gonzalez deflected the ball into foul territory beyond the first-base line, allowing Nick Johnson to score the tying run.
It was the second straight poor performance for Atlanta's bullpen, which couldn't hold a 10-3 lead in the bottom of the seventh at Philadelphia on Wednesday night. The Phillies rallied for a 12-11 win.
- Washington manager Manny Acta said INF Ronnie Belliard is day to day with lower back tightness that forced him out of Wednesday's game. Willie Harris started at second base.
- Braves manager Bobby Cox said LF Garret Anderson still had some soreness after tweaking his right calf in Philadelphia. Diaz started for Anderson, who hit a pinch-hit groundout in the eighth.
- 3B Chipper Jones was back in the lineup after missing Wednesday's start with a bruised left thumb.
- Former longtime Braves broadcaster Pete Van Wieren threw out the ceremonial first pitch. He retired after last season after 33 seasons calling Braves games.