Matt Garza pitched three-hit ball for 8 2-3 innings, and the Chicago Cubs sent Zack Greinke to his worst beating in 1½ years in an 8-0 victory over the Milwaukee Brewers on Thursday that prevented a four-game sweep.

Helping the Cubs improve to 2-5, Garza (1-0) struck out nine and walked two — both in the first two innings. He induced Cesar Izturis to hit into an inning-ending double play in the second, starting a stretch in which he retired 16 of 17 batters.

Nori Aoki reached with two outs in the ninth when Garza threw his comebacker over first baseman Bryan LaHair and into the stands for a two-base error. Garza was removed after 119 pitches and Shawn Camp needed just four pitches to end it, retiring pinch-hitter George Kottaras on a game-ending groundout.

Greinke (1-1) allowed eight earned runs for the first time since July 26, 2010, against Minnesota. He gave up nine hits and needed 84 pitches to get through 3 2-3 innings, a sharp contrast to his seven shutout innings against St. Louis last weekend in his season debut.

He retired his first six batters, then allowed seven of the first eight batters to reach in a six-run third.

Reed Johnson, Darwin Barney and Starlin Castro hit RBI singles, Alfonso Soriano drove in two runs with a broken-bat flare to right field and Ian Stewart beat the infield shift with a run-scoring, opposite-field single to left-center.

Chicago tacked on two runs in the fourth on David DeJesus' run-scoring infield single and an RBI single by Castro. The Cubs had not scored more than five runs in a game coming in.

Steve Clevenger had three hits for Chicago, including leadoff doubles in both the third and fourth innings.

NOTES: Brewers 3B Aramis Ramirez was given the day off. ... The Cubs open their first trip of the season Friday at St. Louis. Jeff Samardzija (1-0) will face Adam Wainwright (0-1) and the Cardinals. ... The Brewers head to Atlanta, where Randy Wolf (0-1) starts against Jair Jurrjens (0-1).