Hudson (15-6), who had not lost since June 4, saw an even longer streak go by the boards. He had been 76-0 when given a lead of three or more runs, dating back to Aug. 23, 2000 when Hudson was with Oakland and lost 7-5 to Cleveland. Hudson is 95-2 in his career when he has been given such an advantage.
The Braves fell four games behind the San Diego Padres in the NL wild-card race, and seven games behind the New York Mets in the NL East.
Cardinals reliever Russ Springer (7-1) got the win by pitching a scoreless fifth inning. Jason Isringhausen pitched the ninth and recorded his 26th save in 28 opportunities.
Mark Texeira went 2-for-3 with an RBI, giving him 30 RBI in 23 games since joining the Braves.
Hudson, who entered the game 7-0 with a 2.06 ERA since the All-Star break, was sailing along until the fifth when St. Louis sent 10 men to the plate and scored five times to take a 5-3 lead.
Aaron Miles, batting in the ninth spot, led off the inning with a bunt single. Miles went to second when David Eckstein followed with a single to right, and scored on Rick Ankiel's broken-bat single to short right that made it 3-1.
Pujols followed Ankiel with a single up the middle to score Eckstein and the Cardinals tied it at 3-3 on Edmonds' hit that went under Braves' shortstop Yunel Escobar's glove and was generously ruled a single.
After Chris Duncan made the first out on a flyball to left, Scott Rolen gave the Cardinals the lead with a double off the wall in right. Pinch-hitter So Taguchi made it 5-3 with a sacrifice fly to right that scored Edmonds.
Atlanta cut the lead to 5-4 in the sixth on Teixeira's based loaded, infield single to third off St. Louis reliever Randy Flores.
Hudson gave the Braves a 1-0 lead in the second inning with a two-out, RBI single to left that scored Andruw Jones. Kelly Johnson's leadoff homer off St. Louis starter Joel Pineiro in the third made it 2-0, and Hudson gave himself a three-run cushion in the fourth when he again drove home Jones, this time with a single to right.
Pineiro had his shortest outing since coming to St. Louis, lasting just four innings. Pineiro allowed three runs and seven hits with two walks and five strikeouts before being pinch hit for by Ryan Ludwick.
Former Braves first round pick Adam Wainright will try for his 12th win tomorrow for the Cardinals. ... Edmonds had two or more hits for the 10th time in his last 19 games. Edmonds is batting .333 in that span (23-for-69). Brian McCann went 0-for-5, ending his hitting streak at six games.