The run Lannan gave up was unearned, and he threw just 96 pitches, 61 for strikes.
The only time Lannan was in trouble was in the eighth inning. With runners on first and third and one out, Omir Santos hit a fly ball to medium right field. Elijah Dukes slipped in the wet outfield, but it appeared he would catch the ball. However, he dropped it, allowing David Wright to score. Dukes was charged with an error on the play.
"It made me even more upset about making that error out there because John was pitching such a good game," Dukes said. "That something you don't want to do, is stop the flow of the game by making an error. But he regrouped, kept his focus and finished the game."
Lannan wasn't celebrating after getting his first complete game. He said he was hungry and tired.
"I'm tired -- mentally and a little a physically -- because I was running the bases," Lannan said. "But I feel great. We needed this win. It was great that the offense and the defense came through, too."
Lannan's outing was the antithesis of his past two outings, in which he allowed eight runs in 10 innings. The goal on Saturday was to pound the strike zone early, let the opposing hitters put the ball in play and the let the defense do the work. In his past two starts, it appeared to manager Manny Acta that Lannan was thinking too much about getting strikeouts.
This time, the defense did all the work. Lannan was able to get 19 groundouts and induce the Mets to hit into five double plays, four of which came in the first four innings.
"Despite being a little shaky with his control in the first couple of innings, he made pitches when he had to," Acta said. "He was on pace to get nine double plays after the first four innings. That's what he is capable of doing when his sinker goes to work."
The weirdest double play came in the fourth inning. Luis Castillo was on first base when Emil Brown hit a liner to right field. Dukes dove and trapped the ball. However, Castillo thought Dukes caught the ball and headed back to first base. Brown passed Castillo on the basepaths, so Brown was automatically out. Castillo then tried to go to second base, but he was thrown out.
"I guess Castillo turned around before the umpire made the call, "Acta said. "He probably thought Elijah caught the ball on the fly. We knew on the bench right away that Emil Brown was out because he passed the runner right away. We were hoping our kids would throw to the right base and get the right guy."
It was Nationals' third complete game from the young rotation. For Acta, Lannan's start sent another loud message that the future is bright when it comes to the starting pitching.
"It's nice to see. The future is bright here, especially with the kids who are shaping up this rotation right now," Acta said. "Are we going to have the five of them in this rotation for the next 10 years? We didn't know yet. It's nice to see we have five, six, seven guys we have to choose from -- to keep us in the game and compete at this level."
Lannan was given plenty of run support, starting with the first inning. With right-hander John Maine on the mound, the Nationals scored three runs, highlighted by Adam Dunn's two-run homer.
Three innings later, Dukes added to the scoring by taking Maine's 3-1 pitch and hitting the ball over the left-field wall for his fifth home run of the year.
In the fifth inning, Maine couldn't get anybody out. By the time Maine left with no outs in the inning, he gave up a three-run homer to Nick Johnson.
"We kind of had a plan on how he was going to attack us. He pitched well against us the last time," Dunn said of Maine. "He obviously didn't have his good stuff tonight. We made him pay."
Bill Ladson is a reporter for MLB.com. This story was not subject to the approval of Major League Baseball or its clubs.