The Diamondbacks, trailing 4-2 in the eighth, forged a late tie when Wil Nieves led off with a single against Rangers starter Yu Darvish and one out later Didi Gregorius blasted a two-run homer into the right field stands.
Then in the ninth, Miguel Montero greeted Jason Frasor (0-1) with a lead-off double. After A.J. Pollock struck out, Robbie Ross came in to pitch and intentionally walked pinch-hitter Martin Prado to get to Pennington.
But the light-hitting second baseman crossed up the Rangers' strategy by scorching a hit down the first-base for the walk-off game-winner.
Reliever Brad Ziegler (2-1) earned the decision for the Diamondbacks, who took the day's first game 5-3 and moved 1 1/2 games ahead of the pack in the National League West.
Gregorius finished 2-for-4 with three RBI in the win.
A.J. Pierzynski had two hits and drove in a pair of runs for AL West-leading Texas.