Sadler passed Keselowski after a restart with 18 laps to go but was assessed a pass-through penalty with 11 laps remaining for jumping the restart.
That move gave the lead to Keselowski for good, who went on to finish 3.3 seconds ahead of Penske teammate and former Indianapolis 500 winner Sam Hornish Jr.
It was the first NASCAR win for Penske at Indianapolis, where his IndyCar team has won 15 times.
Sadler, meanwhile, angrily maintained he was hit from behind by Richard Childress Racing teammate Austin Dillon before the restart, but the ruling was upheld after a review and the Nationwide points leader wound up finishing 15th.
Ty Dillon finished third, Denny Hamlin claimed fourth and Austin Dillon -- Ty's older brother -- rounded out the Top 5.
Austin Dillon moved one point behind Sadler with the performance.
'Happy' fan videos make Pharrell cry [VIDEO]
Pistorius testifies he didn't consciously pull trigger when he shot girlfriend