From 2002 to 2020, Ohio State has the best record in FBS with 211 wins and just 35 losses (.858 winning percentage).
During that time, Purdue (along with Penn State) has the most wins over Ohio State: 4
The combined final record of those four Purdue teams that beat Ohio State: 25-25 (.500)
The combined final record of the other 31 teams that beat Ohio State: 323-86 (.790)
Purdue is the only team with a losing record to beat Ohio State, and they did it twice: 2009 (5-7) and 2018 (6-7)
Ohio State's 29-point loss (49-20) to Purdue in 2018 was the fourth-worst during that span, behind a 32-point loss (35-3) to Southern Cal in 2008; a 31-point loss (31-0) to Clemson in 2016; and a 31-point loss (24-55) to Iowa in 2017.
A quick look back at the Purdue series from 2002 to the present:
2002: Ohio State has only 267 total yards and goes 4/15 on 3rd downs but ekes out a 10-6 victory with a Holy Buckeye!
2003: Ohio State gets 3 FGs from Mike Nugent and a defensive score from Mike Kudla, and Purdue shanks a FG in OT, to give Ohio State the 16-13 win.
2004: In his last bad game prior to the Debacle in the Desert, Troy Smith completes just 14 of 29 passes (.483) with three picks as Ohio State loses, 17-24.
2007: Ohio State got out to a 14-0 first quarter lead and then Tresselballed their way to a 23-7 victory.
2008: For the second time in four contests, Ohio State beats Purdue without the benefit of an offensive TD (3 FG & blocked punt). Final score: 16-3.
2009: Five turnovers, five sacks allowed, nine penalties, and #7 Ohio State loses to a hapless 1-5 Purdue squad, 18-26. Worst Buckeye loss ever?
2010: In a measure of revenge, Ohio State smokes a pretty good Purdue team, outgaining the Boilers 489 to 118 en route to a 49-0 whitewashing.
2011: In the only season where the two teams were close in terms of talent (they both were mediocre), Purdue beat Ohio State 26-23 in OT.
2012: With Kenny Guiton at the helm, Ohio State scored a last-second TD and 2-pointer to tie the score, then won the game in overtime, 29-22.
2013: Ohio State wins in a romp, outgaining Purdue 640 yards to 116 yards, and outscoring them 56 to zip.
2018: Rondale Moore racked up 194 yards and D.J. Knox (who?) added 154 yards (22% of his season total) as Purdue crushed Ohio State, 20-49.
Overall, Ohio State has a 7-4 record against Purdue since 2002, outscoring the Boilermakers 277 to 176 (25 to 16 on a per game basis). Eliminate the three blow outs (Ohio State wins in 2010 and 2013; Purdue win in 2018) and the overall score in the series is 152 to 127 (19 to 16 on a per game basis). Ohio State has not been playing good football, Purdue already has a couple of big upsets on their résumé, and the weather is going to be bad, so I'd look for another ugly, low-scoring, close game.