Corbin (9-11) was coming off two successive rough starts that included a 16-4 loss to Chicago in which he allowed eight runs in three innings. On Saturday, he consistently shut down Cubs threats while scattering five hits in 6 2/3 scoreless innings.
Arizona had dropped five of six before Saturday's victory.
Archie Bradley followed with 1 1/3 scoreless innings, but closer Fernando Rodney gave up Kris Bryant's two-run single in the ninth to end the shutout. David Hernandez came on to strike out Ben Zobrist with two runners on for his second save of the season and first with Arizona.
The Cubs' 10th loss in 27 games since the All-Star break dropped them into a virtual tie with streaking St. Louis for the NL Central lead. The Cardinals (61-56) won their eighth in a row, holding off Atlanta 6-5. The Cubs (60-55) have led the division for 19 consecutive days.
Lester matched zeroes with Corbin until the game fell apart for Chicago in the sixth. Adam Rosales led off with a single and, after an A.J. Pollock groundout, the Cubs elected to intentionally walk Paul Goldschmidt, who had four homers in his previous two games against them.
The strategy backfired when J.D. Martinez lined a double to right field for the game's first run. Shortstop Javier Baez threw the ball 10 feet over catcher Alex Avila's head for a two-base error while trying to get Goldschmidt at the plate on Ketel Marte's grounder.
Drury, formerly an everyday regular but starting for the first time in seven games because of his defensive liabilities, drove a two-run double to center field to make it 4-0.
Lester (8-7) left an inning later after David Peralta's leadoff double. Hector Rondon gave up Pollock's run-scoring single before working out of further trouble.
Peralta finished it off with an inside-the-park homer in the eighth -- his 12th homer of the season -- against reliever Jason Grimm, a shot off the center field wall that ricocheted wildly and allowed Peralta to score easily. It was Arizona's second inside-the-park homer of the season, with Marte getting one at Chase Field against Atlanta on July 26.
Corbin gave up 14 runs (10 earned) in nine innings in his previous two starts, only to shut down the Cubs by striking out eight and walking one.
Bryant has reached base nine times in 10 plate appearances in the series on five singles, a double, two walks and a hit-by-pitch. He was 3-for-4 Saturday, with a flyout in the seventh with two on and two outs.
Lester permitted four runs (three earned) and seven hits despite striking out nine in six-plus innings.
The Cubs threatened in the fifth after leadoff singles by Baez and Avila and Lester's well-placed sacrifice bunt. But Baez was thrown out at the plate trying to score on Albert Almora Jr.'s grounder -- the call was upheld on replay -- and Anthony Rizzo's long drive with the bases loaded and two outs was caught just short of the right field fence by Martinez.
Chicago also couldn't score in the first when the Diamondbacks failed to convert two double play grounders. Drury's throwing error negated one and Corbin failed to cover first on the other, but Corbin pitched out of trouble by getting Ian Happ to ground out with two on.
In the bottom of the inning, Peralta and Adam Rosales singled in succession off Lester, but the Cubs converted a double play on Pollock's grounder and Goldschmidt struck out.
Arizona put runners on first and third with two out in the fourth, but Drury popped up to end the threat.
NOTES: Cubs manager Joe Maddon started the left-handed hitting Kyle Schwarber -- despite his .193 average-- against LHP Patrick Corbin because of his power potential. But Schwarber struck out in his first three at-bats. ... Arizona All-Star LHP Robbie Ray threw a simulated game as he recovers from taking a 108 mph line drive off his head on July 28 in St. Louis. ... Albert Almora Jr. became the 10th Cubs hitter to bat first this season. ... Chicago lost for only the fourth time in its last 17 road games. ... Corbin is 7-3 at home, 2-8 on the road.