Lohse (16-3) made his team-leading 32nd start, giving up three runs and five hits in six innings.
Jason Motte earned his sixth save in the Cardinals' last seven games, and now has 40 saves this season.
Molina did not play for the defending World Series champions because of lower back spasms, having hurt himself while getting out of the way of a pitch Saturday. The catcher was feeling better, manager Mike Matheny said, still had some discomfort.
Beltran did not start because of what Matheny believed to be food poisoning. The outfielder had a pinch-hit RBI single during a two-run eighth.
Allen Craig got three hits and drove in two runs for St. Louis.
Shortstop Pete Kozma, called up by the Cardinals in late August, hit his first major league homer, a solo drive in the sixth. He also had a sacrifice fly.
Alfonso Soriano hit his 31st homer for the Cubs, giving him a career-high 105 RBIs.
Cubs starter Justin Germano (2-9) worked 5 2-3 innings, giving up four earned runs and 10 hits.
Craig hit a two-run double with two outs in the third and David Freese had an RBI single. St. Louis would have had the bases loaded for Craig, but a baserunning mistake found both Matt Carpenter and Matt Holliday on third base and Carpenter was tagged out.
Chicago got two runs back in the fourth on Welington Castillo's RBI double and a wild pitch.
NOTES: The Cubs saluted retired pitcher Kerry Wood in pregame ceremonies. Wood, a 12-year Cubs veteran and 1998 NL Rookie of the Year, retired in May with the third-most strikeouts in team history (1,470). "I was fortunate to call Wrigley Field my home," he said. "A lot of great memories and a lot of great moments."
Link to boxscore: St. Louis 6, Chicago 3