Ryan Ludwick hit the longest home run at 3-year-old Busch Stadium for the Cardinals, who have lost two straight after winning five in a row.
But Lohse tired in the last two innings of an eight-inning outing, squandering a three-run lead and missing a chance to win his 10th straight decision.
The Brewers bunched all but one of their seven hits off the right-hander in the seventh and eighth. They tied the game with two runs in the eighth on an RBI single by Rickie Weeks and a run-scoring single by J.J. Hardy in consecutive at-bats.
Hall, whose 10th inning homer off Ryan Franklin ignited a three-run rally in a 6-3 victory on Monday, hit his 14th homer with one in the top of the ninth off Kyle McClellan (2-5). The Brewers have homered in 18 straight games, the second-longest streak in franchise history, totaling 28 in that span.
Brian Shouse (4-1) needed only eight pitches to retire the side in order in the eighth and Salomon Torres got three outs for his 18th save in 22 chances.
Troy Glaus was 0-for-3 with a walk for St. Louis, ending a 10-game hitting streak in which he batted .525 (21-for-40) with five homers.
No Brewer reached base until Prince Fielder singled up the middle to start the fifth and Lohse had a season-best seven strikeouts.
Jeff Suppan allowed three runs and eight hits in seven innings after being activated from the 15-day disabled list with joint irritation in his elbow. He had been 4-0 with a 1.48 ERA against his old team since leaving for a free agent deal with the Brewers in 2007.

