Ryan Braun missed hitting for the cycle by a home run for Milwaukee, which had had nine extra-base hits while winning its third straight.
Milwaukee trailed 4-2 in the sixth before scoring four times to break the game open. One run scored on a wild pitch and another came home on an error by Giants catcher Bengie Molina -- both on the same play. Weeks then doubled to left-center to drive in two more and give the Brewers a 6-4 lead.
Fielder added his 20th home run of the year off San Francisco reliever Osiris Matos (0-2) in the seventh, a towering shot that easily cleared the stands in right field and landed in the waters of McCovey Cove. It marked the 15th consecutive game in which the Brewers have homered, tying the third-longest streak in franchise history. The club record is 19, set in 1996. Fielder also had an RBI single in the ninth.
Carlos Villanueva (4-5), the second of four Brewers relievers, pitched 1 1-3 scoreless innings to get the win. Salomon Torres pitched the ninth for his 16th save in 19 opportunities.
Milwaukee starter Ben Sheets, who started and threw two scoreless innings for the American League in Tuesday's All-Star game, labored throughout the game and had problems with his command. He gave up nine hits and four runs -- two earned -- over five innings before turning the game over to Milwaukee's bullpen.
The veteran righty, pitching on three day's rest for the first time this season after his appearance in the All-Star game, also had an RBI-double as Milwaukee improved to 5-0 against San Francisco this season.
Omar Vizquel had two hits for the Giants but, typical of San Francisco's season this year, had to leave the game in the sixth after fouling a ball off his left ankle.
Vizquel entered the game with a .156 average and was 6-for-64 over a 21-game stretch before doubling and singling off Sheets. The veteran shortstop also drove in a run and scored for the Giants, who lost for the ninth time in 11 games.
San Francisco right-hander Jonathan Sanchez struck out eight in 5 1-3 innings but remained winless in his last three starts.