Wood (4-4) allowed two runs and struck out seven for the Cubs, who took two of three from the NL Central leaders to win a series for the second time this season. The left-hander walked three, all in the first inning.
Hector Rondon earned his fifth save in five chances after allowing a leadoff double to Ryan Braun in the ninth for Milwaukee's third hit. The Brewers, who began the day with the NL's best record, have scored 11 runs in five games.
Marco Estrada (3-2) gave up four runs and seven hits - five doubles and two homers - in five innings. In nine games this season, Estrada has served up 12 home runs, second-most in the majors.
Castillo's two-run shot gave the Cubs a 2-0 lead in the second. Luis Valbuena scored on Castillo's fifth homer after drawing a walk.
The Cubs extended their lead to 3-0 in the third after Starlin Castro and Valbuena hit back-to-back doubles with two outs.
Olt hit his team-leading ninth homer in the fourth to make it 4-0. He leads NL rookies in home runs.
The Brewers had been scoreless for 20 straight innings, since the second inning on Friday.
Milwaukee challenged whether Junior Lake was safe after he stole second in the seventh. Umpires reversed the call after a replay review and Lake was out.
The Brewers loaded the bases with three walks in the first before Khris Davis grounded out to end the inning.
NOTES: Brewers OF Carlos Gomez missed the game due to a stomach ailment. He was scratched from the lineup Saturday due to lower back tightness. Gomez said his back was fine Sunday. ... Brewers 3B Aramis Ramirez (left hamstring) said he will do some light jogging Monday or Tuesday. He went on the disabled list Tuesday. ... Brewers RHP Jim Henderson (right shoulder inflammation) threw about 25 pitches in a bullpen session and reported no pain. He said he'll throw a bullpen Tuesday or Wednesday and then possibly go on a rehab assignment. ... Cubs manager Rick Renteria said RHP Pedro Strop (groin) is expected to start rehabbing at extended spring training in Arizona soon. ... OF Nate Schierholtz was out of the lineup. He was hitting .197. ''His at-bats have been better, but we haven't had the results that we wanted,'' Renteria said. Ryan Kalish started in right field. ... Brewers RHP Wily Peralta (4-2, 2.05 ERA) will start against Atlanta on Monday. The Cubs have Monday off before beginning a two-game series at home against the New York Yankees.