Miguel Cabrera went 2-for-4 with a two-run homer in the sixth for the Marlins, who lost the first two games of this series.
Tied at two in the eighth, Hanley Ramirez singled to drive in Dan Uggla from second base.
After Cabrera popped up to the catcher, Willingham hit his eighth homer of the season into the left-field seats off reliever Jose Capellan, who took the loss.
Brewers starter Chris Capuano hit his first career homer to give Milwaukee a lead in the fifth. Corey Hart also knocked a solo shot in the 7th to tie the game at 2-2.