Yale took its first lead at 24-21 on a short field goal in the third. Princeton's Isaiah Barnes answered with a 53-yard TD catch for a 28-24 lead. But Bryan Holmes made another field goal at the start of the fourth and Robert Clemons III scored the go-ahead TD on a 19-yard grab.
Yale won last season, but neither team has won more than two straight in the last decade.
Roberts was 20-of-29 passing for 185 yards and a touchdown, and had a rushing score for Yale (6-3, 3-3 Ivy).
Kanoff threw for 338 yards with three touchdowns and two interceptions for Princeton (5-4, 2-4).