ATLANTA -- Tim Hudson was close to perfection on the mound.
Nate McLouth was perfect at the plate.
Hudson pitched a one-hitter, facing only two batters above the minimum, and the Atlanta Braves ruined the Milwaukee debut of Zack Greinke, rocking the 2009 AL Cy Young Award winner in a 8-0 victory Wednesday night to complete a doubleheader sweep of the Brewers.
The Braves romped in the first game, too, winning 8-3. McLouth reached in all eight of his plate appearances over the two games, going 5 for 5 with three walks, and he broke open the nightcap with a two-run homer.
But Hudson (4-2) was the star of the twinbill, nearly matching Francisco Liriano's no-hitter the previous evening for Minnesota. The right-hander retired his first nine hitters before Rickie Weeks led off the fourth with a double. He was the only Brewers player to reach base, also drawing a two-out walk in the ninth.
Only four of Hudson's outs came on fly balls, his sinker working to perfection. He posted his 12th career shutout and first complete-game win since May 2, 2008, against Cincinnati.
"I'm never trying to throw a no-hitter," he said. "But that was about as close as I feel like I can get."
McLouth was seemingly in the middle of everything on offense. One of his hits was initially ruled an error, but even that went his way when the official scorer changed the call between games.
"With a doubleheader, it can kind of go one of two ways. You can have a terrible day or a great day," McLouth said. "It was a great day."
Not so for Greinke (0-1), acquired from Kansas City in an offseason trade to bolster the Brewers' chances in the NL Central. He broke a rib playing pickup basketball and began the season on the disabled list, setting the tone for a disappointing start to a season in which Milwaukee has been projected as a contender.
After three rehab starts in the minors, Greinke finally got a chance to pitch for the Brewers. While he showed good life on his pitches, striking out six, he also struggled with his consistency and got little help from his defense. The Brewers committed two errors in the first inning, leading to an unearned run.
Greinke gave up four more runs that were earned, including McLouth's homer in a three-run fourth that broke the game open. In all, the right-hander surrendered five hits and walked one before he was lifted after four innings and 86 pitches.
"I guess the end result's bad. For the most part, I pitched decent," Greinke said. "The way Hudson was pitching it wouldn't matter anyway."
The Braves (17-15) stretched their winning streak to four, moving two games above .500 for the first time since April 4. Milwaukee (13-17) has lost a season-high five in a row and slipped to four games below .500, its lowest point since starting the year 0-4.
The Brewers failed to cover first on a routine sacrifice attempt in Game 1, and the defense committed three errors in the second game to cap a thoroughly miserable day.
Alex Gonzalez reached in the first on a grounder that was fumbled away by first baseman Prince Fielder. Jason Heyward was awarded first on catcher's interference, his bat striking Wil Nieves' glove on the swing for the second straight Milwaukee error. Dan Uggla singled to left to drive in Gonzalez.
The Braves manufactured another run in the second -- McLouth walked, Hudson bunted him to second and Martin Prado delivered a two-out hit. Prado had three RBIs in Game 1.
Greinke breezed through a perfect third before the Braves finished him off in the fourth. David Ross and Eric Hinske started it with back-to-back doubles, then McLouth drove a two-run shot into the right-field seats to make it 5-0.
One day after rain wiped out the second game of the series, the teams played two in unseasonably cool conditions for early May in Atlanta. The temperature dipped into the low 50s for the nightcap and felt even colder with a strong breeze blowing.
Tommy Hanson (4-3) shook off a sore back in Game 1, limiting Milwaukee to three hits over six innings for his third straight win. His only big stumble came in the fourth when Fielder homered. Otherwise, the big right-hander made it look easy, allowing only three hits.
"I made a stupid pitch to Fielder and he hit it a long way," Hanson said. "For the most part, though, I didn't feel like I made too many mistakes. Once I got ahead, I just tried to stay aggressive."
"This was a good day all around for the Atlanta Braves," manager Fredi Gonzalez said.
Marco Estrada (1-1) took the loss for Milwaukee in the opener, giving up seven runs in 5 1/3 innings. He'll be shipped to the bullpen now that Greinke is back in the rotation.
Already leading 4-2, the Braves knocked out Estrada in a four-run sixth. They loaded the bases with one out, even without getting a ball to the outfield. McLouth and Prado both reached on infield hits, sandwiched around a walk to pinch-hitter Brooks Conrad.
Mitch Stetter came on face Jason Heyward, but the first pitch sailed wildly to the backstop, allowing McLouth to trot home. Jones followed with a two-run single to right and McCann tacked on a sacrifice fly.
"We didn't play good baseball," Brewers manager Ron Roenicke said. "We're not doing anything very well."
The Braves are donating $100,000 to the Salvation Army and encouraging fans to help with relief efforts after last week's deadly Southern storms. The team has set up collection bins at Turner Field and each of its minor league parks where fans can drop off items such as toiletries, baby products, cleaning supplies and nonperishable food. ... OF Brandon Boggs was outrighted to Triple-A Nashville to make room for Greinke. ... The Braves must decide if Hanson or Hudson will go Sunday on three days' rest or call up someone from the minors to make a spot start at Philadelphia. ... The sparse crowd was listed at 15,543, but never appeared to climb as high as 10,000 during either game.