"That's how you get eight runs," manager Tony La Russa said. "I think we're going to be fine."
Edmonds gave the Cards the lead in the bottom of the first inning after starter Brad Thompson gave up a run in the top half of the inning.
After the first two hitters got outs, Pujols and Scott Speizio had back-to-back singles. Scott Rolen was then plunked with a full-count pitch to load the bases for Edmonds. The slugger, who has been coming out of a slump lately, singled to score Pujols and Spiezio and give Thompson a lead to work with.
With two home runs in this homestand, Edmonds had already shown signs of busting out of his early-season slump, and he has at least one RBI in each of his last five games. The veteran center fielder, who notched just five RBIs the entire month of April, now has seven RBIs in his last five games. Edmonds is now batting .231 on the season, after his average had dropped to .184 on May 7.
"He's been swinging better. He just hit two home runs," La Russa said. "He is a quality guy; he should be fine as we go throughout the season."
Edmonds added another RBI in the third when he came though with another single, this time with two outs, scoring Pujols again to give the Cards a 3-1 lead.
Rolen contributed a two-run double in the fourth, and Eckstein and Spiezio each chipped in with RBI singles.
Making his fourth start of the season, Thompson gave some of the lead back in the sixth, but he held off the Nats enough to earn his third win of the season. Thompson went 5 1/3 innings, giving up three runs on 10 hits and striking out two. The righty threw 98 pitches, his highest total of the year. His previous high was 86 pitches his last time out against Detroit. The converted reliever has increased his pitch count in each start, starting with 78 pitches his first time out against the Rockies.
"I didn't have my best stuff today, but I got through some innings," Thompson said. "I'd like to do a lot more with  pitches than 5 1/3. But we'll take it; it's a win.
"I'm starting to get used to the routine a little bit. I'm feeling more and more comfortable. I still haven't gotten it down yet, but I'm enjoying it."
The right-hander's night could have been a lot worse if it weren't for some timely defense from left fielder Chris Duncan. After losing a fly ball off the bat of Dmitri Young earlier in the inning because of a dark thunder cloud over the stadium, Duncan made a diving catch in front of the warning track with the bases loaded and one out. One run scored on the sacrifice fly, but reliever Todd Wellemeyer got the final out to get out of the inning.
"After losing the first one, it was nice to catch the next one," Duncan said. "I didn't know if I was going to get there or not."
The game got tighter in the last couple of innings and was interrupted for nearly two hours, thanks to some heavy rains.
In the eighth, the Nats added one run on a sacrifice fly off reliever Ryan Franklin. Trailing, 8-4, going into the ninth, the Nats got to Kelvin Jimenez, who started the ninth for the Redbirds. After retiring the first two hitters with no problem, Jimenez gave up a double to Ryan Church with the rain pouring down. Austin Kearns followed with a bloop double down the right-field line to score Church and make it 8-5.
La Russa decided to pull Jimenez and brought in closer Jason Isringhausen to get the final out with the rain still steadily coming down. Isringhausen gave up a single to Young to score Kearns. With the next hitter, Jesus Flores, in the box, home-plate umpire Charlie Reliford finally called the players off the field. The delay totaled one hour and 42 minutes.
Isringhausen came back on and eventually got Flores, who worked the count full, to pop out to second baseman Adam Kennedy in foul territory for the final out.
It marked the second time this season the Cards have endured a rain delay with two outs in the ninth inning. On April 26 against the Reds, the Cards had a 45-minute break in the action. Isringhausen was in the same position that game, having to wait for the delay before he could pick up the save.
"[The delay] was our fault," La Russa said. "We had a couple of relievers that needed relief. We should have closed it out earlier. Then we wouldn't have had to worry about it."