The Brazilian cruised home under a caution after defending champion Dario Franchitti crashed into the wall during the shootout, capping a furious contest that saw an amazing 68 lead changes -- double the former record of 34 set last year.
Kanaan wrested the advantage away from Ryan Hunter-Reay just after the final restart.
Hunter-Reay, the defending IndyCar champ, ended up in third place after being passed down the stretch by rookie Carlos Munoz.
Franchitti, who was seeking a fourth Indy 500 title, ended up finishing 23rd after the late crash.
N.J. man wakes up from 10-hour sleep with knife in back
Sign language interpreter at Mandela service called out as fake on Twitter