Johnson's two-out double in the seventh inning off reliever Taylor Tankersley helped the Nationals end a three-game skid. Washington, which had lost 12 of 13, scored only five runs in being swept by the Mets.
Redding was already out of the game after giving up three runs in the sixth inning and in line for the loss until Johnson's hit.
"We've been struggling in that area, with two outs," Johnson said. "It was good to come through. We've been losing tough games but you have to keep pushing forward. We still had to close it out and play 2 1/2 more innings. It was a good win."
Redding (3-1) pitched six innings, allowing four runs on three hits, while striking out a career-high 10.
Redding was cruising with a one-hitter until the sixth. With one out, he hit Hanley Ramirez with a pitch. Ramirez stole second and scored on a two-out single by Jeremy Hermida. Josh Willingham homered off the top of the left-field scoreboard to give the Marlins a 4-3 lead.
"I tried to throw a fastball away but it ran over the middle of the plate," Redding said. "Willingham was only looking to do one thing and that's hit a home run."
Johnson's timely hit came on a full count. The runs were all charged to reliever Justin Miller (1-1), who loaded the bases before leaving in favor of Tankersley.
"The guys did a great job picking me up in the seventh," Redding said.
Tankersley blamed himself for the loss.
"The deal is everybody did their job to win the game tonight except me," Tankersley said. "I cost us a win."
Marlins starter Andrew Miller pitched five-plus innings, allowing three runs on six hits. Miller left the game after giving up a double to Johnson leading off the sixth. He was relieved by Justin Miller.
Redding didn't allow a baserunner until he walked Ramirez to open the fourth. Ramirez scored on Hermida's double to close the gap to 3-1. Ramirez has reached base in 41 straight home games.
The Nationals took a 3-0 lead in the first inning as Andrew Miller struggled, allowing the first three batters to reach base. They each eventually scored as Johnson, Lastings Milledge and Austin Kearns each drove in a run.
Miller hasn't lasted more than five innings in his four starts this season.
"I felt like I was rushing, there was no rhythm," Miller said. "I was either way off the plate or down the middle. You can't pitch like that here."
Washington placed catcher Paul Lo Duca on the 15-day DL retroactive to April 14 with a sore right hand. They reinstated RHP Shawn Hill, who will start Saturday's game against Florida. ... The Nationals broke a seven-game road losing streak. ... Doug Waechter, selected from Triple-A Albuquerque earlier in the day, pitched two scoreless innings for the Marlins. ... Marlin's RHP Rick VandenHurk, optioned to Double-A Carolina on April 7, went on the minor league disabled list with nerve irritation in his right arm.