Now that the Michigan-Ohio State game has come and gone, we must look back at who was responsible for this missed opportunity at a victory.
Which players need to shoulder the blame? Which ones deserve credit?
Here's a look at all 22 offensive and defensive starters, and a grade for each one.
An "E" is the worst possible grade available.
Gardner looked sharp at times in this one, and pretty bad at others. The lasting image for him from this game will probably be his turnovers.
His interception and fumbles simply can't happen, as Michigan wound up turning the ball over four times.
This was Gardner's worst outing as Michigan's starting quarterback.
Where was the creativeness on offense we were all hoping to see? Robinson never attempted a pass, although he did look very good running the ball.
He was much more effective when rushing from positions other than quarterback, but for whatever reason that's where he got most of his snaps in the second half.
This was such a failed opportunity, but it wasn't all Robinson's fault.
Roundtree had three catches for 92 yards, including an exciting 75-yard touchdown. These Michigan receivers tore up this OSU secondary when given the opportunity, but stayed away from that approach in the second half.
Again, that wasn't Roundtree and the rest of the receivers' fault, though.
Gallon had another solid game, catching six balls for 67 yards. These Michigan receivers did their part in this game, as they had a number of big plays against this OSU secondary.
The fact that this offense got away from throwing the ball in the second half was absurd.
Unfortunately, this may be the lasting image of this Michigan offense from this game.
How can an attack that was so effective in the first half have stalled so bad in the second?
Dileo had only one catch for six yards, and also had a surprising drop at one point.
I put Kwiatkowski in the spot over Funchess, because Funchess was simply nonexistent in this game.
Kwiatkowski rarely has a big impact, but seems to do what he needs to do. He did record a catch for six yards, but it's his blocking ability that allows him to see the field as much as he does.
Even though he's only a redshirt junior, Taylor Lewan has probably played his last regular season game in a Michigan uniform.
He did not have the kind of year that was expected of him, but he was the best player on what was a pitiful offensive line.
Barnum was one of the biggest problems on this underachieving offensive line this year. This unit simply cannot run block, and it showed once again on Saturday.
There were absolutely no holes for Michigan's running backs, as has been the case all season.
Mealer has been a pleasant surprise on this embarrassing unit. With that being said, his performance still hasn't been great.
He is one of the three departing seniors of this group.
Omameh did not have the kind of year many were hoping for. Who deserves the blame for so many players on this O-line underachieving the way it did?
Should it be the players or Darrell Funk?
Schofield seemed to be the lineman that was penalized the most out of this group this year. Whether it be false starts or holding penalties, Schofield did not do much to help this unit this season.
Roh capped off what can be considered a disappointing career on Saturday. He was just nonexistent in way too many games, although he did make a few plays against OSU.
Still, the rush defense needed to play so much better.
Carlos Hyde had way too much success running the ball up the middle against this Michigan front.
Campbell and Washington needed to be anchors against this rushing attack, but they just weren't. Giving up over 200 rushing yards is simply embarrassing.
Michigan's ends played better than its interior linemen did. Braxton Miller was actually contained quite well, not even averaging three yards a carry.
However, the way Hyde was able to run up the middle with effectiveness was inexcusable.
Beyer is basically only a co-starter, as Frank Clark sees just as much time here. Clark's massive sack of Miller is one of the lasting images of this game, and may be used on highlight reels for years to come.
Still, Michigan's ends played pretty well, as Miller wasn't much of a factor running the ball.
Demens' great play continued on Saturday, as he was seemingly involved on most plays. It's too bad the front seven got gashed the way it did, but Demens doesn't deserve much of the blame.
Once again on Saturday, Jake Ryan seemed to be everywhere. Although he did have a few missed tackles, we can excuse him because of his constant presence in opponents' backfields.
Although OSU didn't have much success getting to the edges, it was able to go up the middle on this Michigan front.
Morgan returned from his injury and played just fine. Although we did see a bit of Joe Bolden and James Ross, Morgan definitely did see most of the snaps.
His performance wasn't great, but it can't be complained about a whole lot either.
This was one of the secondary's worst performances of the year. Ray Taylor doesn't deserve much of the blame, though.
He had a fine game; it was his fellow starter at corner that struggled.
J.T. Floyd did not have his best game on Saturday.
He struggled mightily against the likes of Devin Smith and Corey Brown, as Brown racked up 95 receiving yards.
Although he was consistent throughout his career, many people will be glad to see Floyd go.
Again, the secondary had one of its worst games of the season. With that being said, OSU only threw for 189 yards.
It just goes to show how high expectations are for this group. Gordon showed improvement this season, and should show even more next year as a senior.
Kovacs did not have the kind of year many were hoping for. He seemed to whiff on way too many tackles on Saturday, just as he has done so often this year.
Still, this defense will miss his personality and leadership tremendously.