The Cubs had three consecutive singles, with Nate Schierholtz getting an RBI with the third, and a walk before Lake's blast into the seats beyond left field. It was his first career grand slam and fifth homer of the season.
Milwaukee got single runs in the second and third innings only to have Chicago starting pitcher Chris Rusin counter those with a two-run base hit in the bottom of the third for a 7-2 Cubs lead.
All the Chicago runs came off Kyle Lohse (9-9), who allowed 11 hits and walked one in five innings.
Rusin, however, didn't get out of the fourth inning so the win went to Carlos Villanueva (5-8), who had five strikeouts in 2 1/3 innings of no-hit relief.
The Brewers pulled within 7-5 in the eighth on a three-run home run by Scooter Gennett but Chicago got a final run on Brian Bogusevic's fielder's choice.
Kevin Gregg came on for the Cubs and collected his 30th save with a 1-2-3 ninth.
Chicago improved to 9-4 on the season against the Brewers.