The Indiana Hoosiers very nearly pulled off the upset of the season on Saturday, rallying to get within a touchdown in the final minutes at Ohio State.

It wasn’t always pretty for 60 minutes, but it’s not often going to be against the talented Buckeyes.

Let’s grade out the Hoosiers:

Passing offense: A

Once the Hoosiers’ offensive line settled down — and that took a bit — Michael Penix Jr. and the Indiana passing game started to flourish.

And IU hit on the deep ball with regularity, particularly with the Penix to Ty Fryfogle combination. The duo connected for three touchdowns covering a total of 152 yards, and they were some of the best pass/catch plays of the afternoon. The last might have been the best, with Fryfogle fighting off Ohio State cornerback Shaun Wade, then hauling in the pass and racing 56 yards for the score, the Hoosiers’ last.

Penix hit other beauties, like his drop-out-of-the-sky connection to Miles Marshall that set up an early IU score. And it was great when Nick Sheridan went back to the same play that Fryfogle had a drop — that was a critical fourth down early, when things weren’t going the Hoosiers’ way — and Penix connected with David Ellis for the TD.

The numbers are hugely impressive: Penix finished 27-of-51 for 491 yards, five touchdowns and an interception. That INT wasn’t a good look: Penix stared down to his right and delivered late, with Wade waiting. The Buckeyes corner, jumped in front of the receiver and raced to the end zone, putting OSU up 42-21 late in the third.

Fryfogle had a second consecutive monster game, with seven receptions for 218 yards and the three scores.

It looked early like IU’s offensive line was going to completely tie up the offense. Penix was sacked only twice, but he was under duress frequently.

Rushing offense: F

The numbers often speak for themselves and the numbers vs. Ohio State were bad.

Really bad.

Indiana finished with minus-1 yard rushing on 16 carries. They gained 29, but lost 30, 17 of which came on a botched long snap.

Penix had the Hoosiers’ long run of the afternoon, a nine-yarder. Sampson James had the longest carry by a running back, 8 yards.

Indiana’s offensive line didn’t create many holes, but the Hoosiers trailed much of the game and that didn’t do much to help generate rushing yardage, either.

Overall Offense: B+

The Hoosiers put up 35 points against the Buckeyes, often gashing them for gigantic plays in the passing game.

The Penix/Fryfogle connection has been one of the best, if not the best, combinations in the Big Ten, and it showed up repeatedly Saturday. The lack of a running game hurt, but that was part Ohio State and part circumstance.

The Penix pick was bad and the Hoosiers lost 3 fumbles. IU could have had a fourth early, but officials didn’t overturn what appeared to be a clear fumble by Whop Philyor.

Passing defense: B

Indiana did something no one else has this season: Make Buckeyes quarterback Justin Fields turn the ball over. It just shows how great the Hoosiers’ secondary can be, especially when the front was getting pressure, and both were happening vs. OSU.

Safety Jamar Johnson had two of the picks, sandwiched around one by tackle Jerome Johnson, which came after the ball bounced around defenders. Both Johnsons had sacks as the Hoosiers had 5.

Fields, obviously, had his moments. Indiana was hurt by play-action, particularly in the second half, when the Hoosiers were selling out to try to stop the run.

The touchdown to Garrett Wilson, Ohio State’s last offensive score in the third quarter, came on the second of two straight play-action passes.

Fields finished with 300 yards on 18-of-30 for two touchdowns and three interceptions.

Rushing defense: D-

Master Teague III rushed for 169 yards and 2 TDs on 26 carries.

Clearly, IU had trouble slowing the Buckeyes on the run. OSU had 307 yards on 50 carries, averaging 6.1 per tote. The Buckeyes’ success there helped set up the passing game in the second half.

The Hoosiers had trouble setting the edge, keeping the Buckeyes between the tackles; it happened on Teague’s long rush in the third quarter, when he got into space on the right sideline.

Overall Defense: C-

The Buckeyes are going to put the screws to a lot of defenses, but at least the Hoosiers mounted some counterpunching.

They did so by turning the Buckeyes over, collecting three interceptions. And IU got stops late, helping to give the Hoosiers a chance to rally.

But OSU did score 42 points — only 35 on offense — with more than 600 yards of offense. So, there’s that.

Special teams: A

Indiana’s coverage was sound. Haydon Whitehead had a solid day punting. Charles Campbell didn’t attempt any field goals.

Coaching: A

Coach Tom Allen had the Hoosiers ready to play and believing that they could win.

And they very nearly pulled off the upset.

It was made particularly impressive by the fact that the Hoosiers fell behind by three scores in the second half, yet rallied and gave themselves an opportunity to score a potential tying touchdown late. In all reality, Allen and Co. could not have asked for much more.

Overall: B+

Yes, Indiana came to win, but a lot of positives can be taken away from the narrow defeat.

The biggest takeaway is that the Hoosiers shouldn’t be scared of any stage. Indiana played well enough to win if a bounce here or there, particularly early, had gone its way.