Mason Mills completed 5 of 7 passes during the winning 61-yard drive for the Toreros (7-2, 5-1), who led 24-0 at halftime before the Flyers (6-4, 4-3) came back to take a 28-24 lead.
After San Diego’s go-ahead score, Dayton reached its 47 before Rob Beathard intercepted Will Bardo’s pass on the game’s final play.
Bardo threw three touchdown passes in the second half to rally the Flyers, including a 36-yarder to Branden Johnson with 2:33 left that gave them their only lead of the game.
James carried 28 times for 184 yards for the Toreros, who scored on their first three possessions. The third came after they recovered a blocked Dayton punt at the Flyers 32.