David Blough threw for 378 yards with three touchdowns as the Boilermakers stunned 2nd-ranked Ohio State 49-20 at Ross-Ade Stadium.