After Prado gave the Braves a 1-0 lead with a first-inning RBI single, the next batter, Uggla, smacked a 2-2 pitch into the left-field bleachers for a three-run blast.
Hudson (15-6) earned the victory despite coughing up 10 hits over five full frames. He allowed four runs while issuing no walks.
Craig Kimbrel notched his 37th save for National League wild card-leading Atlanta, which moved to within five games of idle Washington atop the NL East.
Wade LeBlanc (2-3) was tagged for six runs on seven hits over four complete innings for the Marlins.
Gorkys Hernandez and Rob Brantly each had three hits with an RBI and Bryan Petersen provided a two-run triple for Miami.
18-year-old elf alleges mall Santa pinched her buttocks on the job
Exploding whale video goes viral on Internet