Woodruff (1-1) retired 19 of 21 batters, allowing a swinging bunt single to Phil Evans in the first. Pittsburgh didn't manage another baserunner until Evans walked leading off the seventh. Woodruff's stuff was so overpowering the Pirates only hit one ball to the outfield during his 6 1/3 innings, a lazy flyball to left by Gregory Polanco in the fifth.
Relievers David Phelps, Devin Williams and Josh Hader finished the one-hitter. Woodruff, an All-Star last season, wasn't aware how close the Brewers came to a combined no-hitter until Phelps told him afterward.
"I didn't even realize it and then I thought back to the play where it was the grounder," Woodruff said. "Maybe we can work on it and a little bit and see if we can get it changed. But I did not realize it. Yeah, it was just a good night. It was making some good pitches and trying to take it pitch to pitch tonight, and it worked out."
Woodruff threw 92 of his 61 pitches for strikes against a lineup that is struggling to produce. Nine of his strikeouts came on swings and misses.
"He was brilliant, really," Brewers manager Craig Counsell said. "Overpowering I think is probably the word that best describes it. It's gotten to the point where the hitter has to respect the fastball so much that they're cheating for a pitch, and (catcher) Omar (Narvaez) and Brandon were really on the same page tonight, and they were throwing a different pitch than what the hitter was looking for, and you saw a lot of swings where they missed by a lot, I guess is the best way to say it."
The Pirates are hitting a majors-worst .171 during their 2-4 start.
"It's not like he worked out of the zone at all," Pittsburgh manager Derek Shelton said of Woodruff. "What did he walk, one guy? He walked Evans. That was it. The only thing you can try to do is break his rhythm. We tried to do that. He stood out there, waited for us to get back in the box and threw strikes."
Ben Gamel gave Woodruff all the support he would need with a third-inning two-run homer over the right-field seats off Joe Musgrove (0-2). The ball clipped the top of a wall on the concourse. Otherwise, it likely would have ended up in the Allegheny River. Keston Hiura homered in the sixth for the Brewers. Hader worked a perfect ninth for his first save as Milwaukee finished its season-opening trip at 3-3.
Musgrove worked 5 2/3 innings, giving up four runs on three hits with three walks and eight strikeouts. The Brewers punished his two mistakes.
"It sucks, you know?" Musgrove said. "But there's plenty of pitches that Woodruff made tonight that I'm sure he saw as mistakes. We just didn't hit them. Sometimes nights go like that. Sometimes you execute all your pitches and you give up six, seven runs. Sometimes you can't hit a spot to save your life and you go scoreless. The game's weird, man."
Christian Yelich's sluggish start continued. The 2018 NL MVP went 0 for 5 and is now 1 for 27 (.037) in his first season since signing a $215 million contract extension.
Brewers: RHP Josh Lindblom felt well enough to get in a core workout on Wednesday, an encouraging sign after exiting his start on Tuesday night with what the team described as back cramps. Manager Craig Counsell expects Lindblom to make his next start as scheduled.
Pirates: The team will continue to monitor Polanco's status following a COVID-19 scare earlier this month and a lengthy rehab from a left shoulder injury that cost him most of last season. Polanco made his first start in right field on Wednesday. He was a designated hitter in his season debut on Monday and served as a pinch hitter on Tuesday.
Brewers: Milwaukee returns to Miller Park for its home opener on Friday against St. Louis. RHP Brett Anderson will make his debut for the Brewers after missing opening day with a blister on his left index finger.
Pirates: Are off Thursday before heading to Chicago for three games against the Cubs. Trevor Williams (0-1, 7.36 ERA) will try to bounce back from a rough outing in St. Louis last week in his season debut. Williams is 3-6 with a 6.30 ERA in 11 career appearances versus Chicago.
More AP MLB: https://apnews.com/MLB and https://twitter.com/AP-Sports
Fantasy baseball forecaster: Team hitting ratings
Stay ahead of the game and optimize your fantasy baseball hitters with our forecaster, which provides a rolling 10-day outlook of every team's hitting matchups as well as the potential for stolen bases.
Fantasy baseball forecaster: Pitcher projections for the next 10 days
Keep up to date on who is pitching -- and how well they're expected to do -- with our forecaster, which provides a rolling 10-day outlook of every team's probable starting pitchers with game score projections.
The St. Louis Cardinals aren't playing like it's 2021 -- but they're winning
The Cardinals' way may not be baseball's way at the moment, but it's working. Will it last?
Weathers expected to start as San Diego hosts St. Louis
St. Louis Cardinals (23-17, first in the NL Central) vs. San Diego Padres (23-17, second in the NL West)
Royals take on the White Sox following Minor's strong showing
Kansas City Royals (18-21, third in the AL Central) vs. Chicago White Sox (23-15, first in the AL Central)
Houston's Altuve puts 10-game hit streak on the line against Rangers
Texas Rangers (18-23, fourth in the AL West) vs. Houston Astros (23-17, second in the AL West)