Besides that, though, the race was slowed by just eight cautions - including the one on the last lap - for 39 of the 200 laps.
Marco Andretti, who went into Sunday believing the race "is mine to lose," was strong at the start, but a series of adjustments were not to his liking and he unraveled on his team radio before spinning to bring out the final caution with 13 laps remaining.
Franchitti and Dixon battled back and forth in the final third of the race, with Sato consistently in the mix. Then came Kanaan, from nowhere it seemed, but he was unable to hang on to the lead on the restart after Marco Andretti's crash brought out the yellow with 13 laps to go.
Andretti said the wreck "definitely rang my bell."
Everyone thought the race would go to a Chevrolet driver for either Andretti Autosport or Penske Racing, which won the first four races of the season and swept the front two rows in qualifying. But in the end, it was three Hondas fighting for their first win of the season.
After the restart with six laps remaining, Franchitti pulled past Dixon for the final time. Sato went with him and slid in front of Dixon to split the Ganassi teammates. The Japanese then went for the lead going into the first turn, pulling even with Franchitti. "Job done," he said he thought, but he went in too low, the tires appearing to touch.
"It looks like he didn't give me enough room to go there," Sato said. "I was a little below the white line. I had nowhere to go."
Sato said the cars never actually hit but the white line marking the inside of the track "was less than touching my own car - so, you know, I mean almost on the grass."
Franchitti coasted across the line under a yellow caution flag to become the 10th driver to win at least three Indy 500s. All three of Franchitti's wins have ended under caution.
This was the second year in a row that a crash on the final lap affected the outcome. In 2011, rookie JR Hildebrand was leading going into the final turn when his car slammed into the wall, allowing Wheldon to cruise past and take the checkered flag.
"I was side by side with Takuma," Franchitti said. "We hit and I managed to keep it out of trouble."
It snaps a disappointing start to the season for Franchitti, who has won the last three championships but seemed stumped by IndyCar's new car through the first four races. In breaking out Sunday for his 31st victory, he's now in a tie with Sebastien Bourdais and Paul Tracy on the all-time wins list.
One more win will move Franchitti into seventh place in the record books. The only drivers ahead of him? The giants of open-wheel racing: three Unsers, two Andrettis and A.J. Foyt, the all-time wins leader.
Video: Motor sports coverage
Hunter-Reay celebrates win in Milwaukee
Ryan Hunter-Reay speaks after winning the Milwaukee Mile for the second straight year. For the first time Hunter-Reay will be able to celebrate the win on Father's Day weekend with his son.
Latest from MotorSportsTalk
Krohn survives wild ride at Le Mans (VIDEO)11 hr 41 min ago
Scott Dixon to be featured in next INDYCAR 36 on NBCSN13 hr 15 min ago
Primer for the 90th Anniversary 24 Hours of Le Mans14 hr 46 min ago
Patrick Dempsey back for second start at Le Mans15 hr 45 min ago
Great racer, father, friend: Jason Leffler remembered16 hr 46 min ago
Social media a boon to F1, NASCAR — but IndyCar lags17 hr 16 min ago
Sparks fly and cars spin out wildly when NASCAR drivers get into accidents.