Molina's home run to left field with one out in the sixth off Milwaukee starter Marco Estrada (0-1) broke a 3-3 tie. Molina has 10 four-hit games in his career, the last coming on May 22, 2011, against Kansas City.
St. Louis has won three straight and leads the Brewers by five games in the NL Central.
Cardinals third baseman David Freese celebrated his 29th birthday with a solo home run. Freese has a hit in 15 of the 17 games he's started and has driven in 20 runs.
Jon Jay had three hits, including an RBI single, and a stolen base for the Cardinals.
Lohse, who entered the game with a 0.99 ERA, tripled his walk total for the season by allowing four base on balls. He gave up six hits and three runs while striking out five.
Before Saturday, Lohse had not allowed a run in the first five innings of any of his previous four starts. Ramirez ended that streak when he hit a 396-foot, home run into right center-field bleachers with one out in the fourth to make it 2-1.
Freese answered that with a 407-foot shot to the same area leading off the bottom of the inning. But Gonzalez led off the fifth with a homer, and the Brewers tied it when Lohse walked Gonzalez with two outs in the sixth to load the bases, then walked George Kottaras to force in a run.
Notes: Before the game, Molina received his fourth consecutive Rawlings Gold Glove as a catcher and the inaugural Rawlings Platinum Glove that is awarded to the game's best fielder. . . . Ramirez, who has a six-game hitting streak, is batting .361 (13-for-36) in his last 10 games after batting .103 (4-for-39) in his first 10. . . . Jay has an eight-game hitting streak and six hits in the first two games of the series. . Milwaukee leads the National League with 29 home runs.
Link to boxscore: St. Louis 7, Milwaukee 3