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.
Dog comes home gnawing on human bone
Julius Randle breaks leg during NBA debut