Woodruff (10-2) allowed one earned run and six hits with six strikeouts in 7 2/3 innings, helping the Brewers improve to 4-5 on their current 10-game homestand.
The right-hander remains among the National League leaders in wins and strikeouts.
While Woodruff hardly broke a sweat, counterpart Jordan Lyles (5-4) threw two wild pitches, hit a batter, gave up a home run and allowed three earned runs in six innings in his first start since being placed on the 10-day injured list with hamstring tightness. Lyles is 0-2 in three starts this season against Milwaukee.
The Pirates scored in the first when Colin Moran doubled to right to score Kevin Newman. Newman reached on a single, extending his hitting streak to 19 games, the longest by a Pittsburgh rookie since 1900.
After drawing a walk, Christian Yelich knotted the game at 1 in the bottom half, scoring from third on a failed pickoff attempt at first base. Lyles was looking to catch Ryan Braun napping, but the right-hander made an errant throw.
Thames tripled down the right-field line, scoring Braun and putting the Brewers ahead 2-1.
That was all the cushion Woodruff would need.
Thames added another run in the fourth on a solo blast to right, his 11th. Thames now has hit safely in 10 of his last 12 starts.
Josh Hader picked up his 20th save.
ONE MORE TO 1K
After failing to register a hit on Saturday, Yelich remains one shy of 1,000 for his major league career.
Brewers: LHP Gio Gonzalez (left arm) played catch on Friday and Saturday. Brewers manager Craig Counsell says he wants to see Gonzalez “get off the mound a couple times before the All-Star break.” Gonzalez is expected to be out until at least July 20. He hasn’t pitched since May 27.
Brewers right-hander Zach Davies (7-2, 3.34 ERA) faces left-hander Steven Brault (3-1, 4.50 ERA) in the finale of three-game series Sunday afternoon. Davies has an 8.10 ERA over his last four starts. Brault has allowed a total of seven runs in his last five starts.
Source: Fox Sports