The Cardinals had five hits and a walk while batting around against Wily Peralta in the first, but the right-hander was still in the game when Garcia (5-2) was chased with one out in the sixth. Milwaukee got one hit in 3 2-3 innings against three relievers, with Edward Mujica working the ninth for his 12th save in 12 chances.
Freese entered with a .209 average, four RBIs and a .287 on-base percentage, struggling to find his stroke after starting the season on the 15-day disabled list with a back injury from chasing a foul ball in spring training. He batted .293 last year with 20 homers and 79 RBIs, the first time he played more than 100 games in the majors.
Matt Holliday had two hits and two RBIs for St. Louis, which has won 13 of 16 and leads the National League at 27-14. Allen Craig had three hits and a walk and leadoff man Matt Carpenter had three hits and scored twice.
Ramirez had been in a 1-for-16 slump before lining a pitch into left-field stands in the fourth, and cleared the wall in center in the sixth for his third homer of the season. It was his 26th career multihomer game.
The first inning has been by far the Brewers' best this season. They had outscored opponents 35-9, the most runs in the majors and fewest allowed.
Peralta appeared to have a good shot at escaping the inning down just a run when he struck out Jon Jay for the second out. Jay entered with a .440 career average against Milwaukee, and Freese had been in a season-long slump with just one extra-base hit and one RBI this month.
Freese then hammered a 1-1 pitch to straightaway center with a stroke reminiscent of the 2011 postseason when he was World Series and NL championship series MVP. Freese made a curtain call responding to a sellout crowd, but struck out his last two trips against Peralta.
Jay got an RBI single in his second trip to make it 6-0 in the third.
Garcia retired nine in a row on 28 pitches before Norichika Aoki slapped a single to open the fourth. Braun walked with one out and Ramirez cut the deficit in half, lining a 3-1 pitch into the left field seats.
Garcia was charged with six runs and six hits in 5 1-3 innings.
NOTES: Brewers manager Ron Roenicke called his first team meeting of the year Thursday after getting outscored 10-2 in consecutive losses at Pittsburgh. ... Roenicke plans to rest Ramirez every third game or so for now while the veteran, who returned in early May from a left knee sprain that knocked him out a month, regains strength and form. ''I don't think I can't say that in a week from now, I can leave him out there and not worry about. I know I'm not there,'' Roenicke said.
Link to box score: St. Louis 7, Milwaukee 6
Link to game discussion at The Cardinal Nation message board