Atlanta snapped a three-game losing streak, while bouncing back against Miami, which won, 2-1, on Monday.
"It was just one of those days where I wasn't getting ahead in the strike zone," said Buehrle, who hadn't walked more than two in any of his first 19 starts. "When I'm doing that, it's going to kill me."
Buehrle had a rare moment when he walked Freddie Freeman with the bases loaded in the third inning.
"When we're struggling to score runs, and we come out and get three on the board, against a team like that and a pitcher like Hudson, it's obviously frustrating," the left-hander said. "Getting the bases loaded and walking a guy in, it's uncalled for."
Technically, Wade LeBlanc suffered the loss, giving up the decisive run in 1 2/3 innings of relief.
Jose Reyes went 2-for-4 with a home run, extending his hitting streak to 12 games.
But after the second inning, the Marlins had just one baserunner. Austin Kearns had a two-out, pinch-hit single in the eighth.
"We couldn't take advantage of Hudson," manager Ozzie Guillen said. "Hudson struggled in the beginning, he had a tough time to throw the ball over the plate, also, but as the game went on, he got better. He was way better. He threw a lot of strikes. Like I said, early in the game, we could've had a chance, but after that, it was the way it is."
The Marlins were able to get to Hudson early for three runs in two innings, with the big blow being Reyes' two-run homer.
The Braves felt Reyes showboated after connecting on the drive to right field.
"I didn't even notice. I heard about it from a few guys," Hudson said. "That's how some guys like to play the game. It's not my cup of tea. I'm just worried about winning the ballgame. We'll face these guys a lot more. I'll face him a lot more and we'll see what happens."
Hudson locked in after the second inning, retiring 16 straight.
At one stretch, Atlanta pitchers retired 18 straight. In the ninth inning, Craig Kimbrel retired the side in order for his 29th save.
Hanley Ramirez, the subject of trade speculation all day, struck out looking on a full count to end the game.
"I'm not thinking about anything like that," Ramirez said of the trade talks.
But the third baseman is aware of the rumblings, not just with him, but for some of his teammates. The A's, for instance, had two scouts at the game, and they are believed to be interested in Ramirez.
"We're just trying to win some ballgames," Ramirez said. "When things are not going good, and you add more things off the field, it's not good."
Miami led, 3-1, after two innings, but Atlanta chipped back with runs in the third and fourth innings off Buehrle to tie it at 3.
"Fortunately we caught Buehrle on a good night," Hudson said. "Normally, he doesn't walk many guys. He probably hasn't walked a leadoff hitter to start a game all year. We were fortunate in that respect to catch him on a night when he was not as sharp as he normally is."
Hudson settled and allowed the Braves to claim the lead in the seventh inning on Heyward's RBI single. Martin Prado tripled to right-center to open the inning off LeBlanc. There was a scary moment in the inning. With two outs, Chad Gaudin relieved LeBlanc, and he plunked Dan Uggla on the left ear flap.
Manager Fredi Gonzalez and the training staff quickly came out of the dugout, but Uggla quickly collected himself and took first base.
For the second straight start, Buehrle was done after five innings, which matches his season low.
The left-hander was not involved in the decision, giving up three runs (two earned) while walking a season-high four. The veteran threw 95 pitches, before giving way to LeBlanc in the sixth.
It was an eventful first inning in Ramirez's return to the lineup after he sat out four games with right hand inflammation.
Atlanta scored an unearned run in the first off Buehrle, who walked Michael Bourn to open the game. Prado ripped a hard grounder to third, which could have been a double-play ball. But Ramirez booted the play, putting runners on the corners. Heyward's sacrifice fly to center opened the scoring.
The Marlins responded in the first. Reyes led off with a bunt single, and he was forced out at second on Greg Dobbs' fielder's choice grounder. With two outs, Justin Ruggiano singled, and Logan Morrison's walk loaded the bases.
Ramirez lined an RBI single to center, but Bourn threw Ruggiano out at the plate, keeping the score tied at 1. Replays showed Ruggiano was safe on a close play.
"As soon the umpire calls you out, you can go argue with them [umpires]," Guillen said. "They're not going to change the play."