Purdue had a chance to go on the road Friday night and make a statement against a Minnesota team that had been a disappointment in 2020.

Instead, the Boilermakers fell behind early and couldn’t complete their second-half comeback, seeing it come up short on an offensive pass interference call that was almost universally deemed to be awful.

Let’s grade the Boilermakers after the 34-31 loss in Minneapolis:

Passing Offense: A

Making his first start of the season, Jack Plummer was simply phenomenal. The numbers speak for themselves: 35-of-42 for 367 yards with three touchdowns (and a questionable interception).

Plummer looked patient, mature and confident. He often made the correct decisions, forcing a ball into a window when necessary or taking the checkdown when not.

While he hit only five receivers on the evening, they were fairly well-distributed: He completed 15 passes to Rondale Moore, 8 to David Bell, 5 to Zander Horvath, 4 to Payne Durham and 3 to Milton Wright. On Purdue’s first drive, which resulted in a Moore touchdown run, Plummer connected with four receivers.

Later in the game, Plummer made a fantastic decision, when he tossed the ball to Moore, his hot read, to beat a Minnesota blitz.

Purdue didn’t take a lot of deep shots in the first half — aside from a somewhat busted play to Wright, a 39-yarder — but Jeff Brohm remedied that early in the third, when he called for Plummer to look for Bell down the seam. The two connected, leading to a score that helped Purdue get back into the game.

Plummer made a couple of absolutely perfect tosses: The best was the non-touchdown pass to Durham with less than a minute left, that was inexplicably called back on the offensive pass interference. Plummer dropped the ball straight into the arms of the tight end at the back of the end zone.

The interception that came a play later, when Plummer forced the ball over the middle to Moore. It was high and picked. Never mind, of course, that Moore might have gotten held as the pass zipped by.

Moore made his season debut and was fantastic, with 116 receiving yards. He and Bell are one of the best 1-2 punches in the Big Ten.

Plummer was not sacked and had excellent pocket awareness, particularly impressive for his first start of the year.

Rushing Offense: B-

The addition of Moore, along with Plummer’s athleticism and King Doerue’s improving health, gave the Boilermakers a more dynamic running attack.

They finished with 125 yards, averaging 5.0 per carry. But maybe it should have been more, given that Minnesota came in with the Big Ten’s worst rushing defense, allowing nearly 240 yards per game.

Moore gives Purdue an outside option, particularly when he can take a sweep to the perimeter. He did so on the first touchdown, picking up a nice seal block from right tackle Greg Long and another block from Bell. Moore finished with 20 yards on three carries. Plummer had 22 off of scrambles, a nice addition that had not been available with injured starter Aidan O’Connell. Doerue had 15 — but lost seven on a botched snap/exchange that wasn’t his fault — including a dive over the top on a fourth down.

Horvath finished with 68 yards on 10 carries.

Overall Offense: B+

Purdue turned in its best offensive performance of the season, scoring 31 points with 492 yards. The Boilermakers converted eight of their 12 third-down chances and made up for one of the misses by converting on fourth down.

Yet, Purdue left points on the board too, ones that could have changed the game. The Boilermakers botched the end of the first half, having a field goal blocked when they should have had at least one more offensive play. And they settled for a FG attempt on their second-to-last possession, which they missed.

And of course, the officials made the controversial PI call on Durham, taking a score off the board. The next play was Plummer’s pick.

Passing Defense: C

Even with George Karlaftis returning, at least in a limited fashion, the Boilermakers have virtually no pass rush.

Purdue has only three sacks in four games this season, none on Friday night. Purdue barely got any pressure at all. Even when Bob Diaco brought extra men, like on a fourth-and-8 play in the third quarter, the Boilermakers couldn’t hit home. On that critical fourth down, Minnesota QB Tanner Morgan found Chris Autman-Bell for a 33-yard completion, setting up a 1-yard touchdown run a play later.

Purdue was burned too frequently on slant passes, where Morgan — 15 of 22 for 264 yards — feasted. The Boilermakers nearly picked him off once, when linebacker Jaylan Alexander got hands on a pass in the end zone in the first half. Cory Trice had a great third-down PBU.

Rushing Defense: C-

Purdue too frequently was blown off the line of scrimmage by Minnesota’s front, with running backs getting through untouched.

It was just ugly at times.

The Boilermaker defensive front seemed to have a gap assignment issue on the Gophers’ first touchdown, when tackle Lawrence Johnson tried to nudge Lorenzo Neal to his left a moment before the snap. Later, wide receiver Seth Green rushed into the end zone from 3 yards without being touched.

Purdue made nice plays, none better than Marvin Grant’s fourth-down stop in the fourth quarter, when he busted through the line on a run blitz and dropped Green. Derrick Barnes had a fantastic tackle for loss. And in general, Neal is a force.

The Golden Gophers had 130 yards rushing, averaging only 3.2 yards per attempt. But Purdue was simply gashed early, a tone setter.

Overall Defense: D

For much of the game, Purdue couldn’t get off the field.

Minnesota converted 7 of 11 third downs and one fourth down, which set up a touchdown on the next play. The Golden Gophers had 394 yards and 34 points.

But the Boilermakers tightened up late, holding Minnesota on its last two possessions to give their offense a chance. One was Grant’s fourth-down stop — um, what exactly was P.J. Fleck thinking there? — the other on a three-and-out, then punt.

Special teams: D-

J.D. Dellinger missed two field goals, the second a 33-yarder that would have tied the score in the waning minutes. The snap looked high, potentially throwing off the timing. But it’s a kick that has to be made. The veteran also had his late second-quarter kick blocked — it never really got off the ground — and made a chippy earlier in the second quarter.

Purdue punted only once, a 51-yarder inside the 20 by Zac Collins. The return games for both squads were insignificant.

Coaching: C

Brohm had Purdue back in a position to win the game late, and probably should have if not for a bad offensive PI call. But Purdue must sharpen up and not let opportunities dissolve. Perhaps then the Boilermakers wouldn’t be in such late-game situations.

Case in point: The end of the first half was botched. There’s no reason not to call a timeout with 15 seconds left, rather than snap the ball. Brohm chose the latter and wasted three seconds of game clock. After, Purdue got only one more offensive play — a TD to Moore that was reversed on replay — before settling for a FG (which was blocked). A timeout at 15 gives Purdue at least two more throws into the end zone. But Brohm took the timeout to the half.

Made no sense.

Overall: C-

Purdue lost a game that it probably should have won and that’s frustrating.

Sure, the call at the end didn’t help, but the Boilermakers had other opportunities, left multiple scores on the field and couldn’t get enough stops, particularly in the first half.