Uggla's 20th homer, a three-run shot in the second inning, extended his career-best hitting streak to 21 games.
The Marlins have dropped two in a row following a five-game winning streak.
Hudson (10-7) allowed six hits, one run and no walks with five strikeouts.
Winning for the first time in three starts, Hudson improved to 4-1 with a 2.80 ERA in six starts this month.
Jonny Venters struck out Hanley Ramirez to end a bases-loaded threat in the eighth.