Michigan State redshirt senior quarterback Connor Cook (18) celebrates following the Spartans' upset of the Buckeyes on Nov. 21 at Ohio Stadium. Credit: Samantha Hollingshead | Photo Editor

Michigan State redshirt senior quarterback Connor Cook (18) celebrates following the Spartans’ upset of the Buckeyes on Nov. 21 at Ohio Stadium. Credit: Muyao Shen | Assistant Photo Editor

All good things must come to an end, which the Buckeye faithful learned painfully as the Michigan State Spartans hit a last-second field goal to end Ohio State’s 23-game winning streak.

For the final home game of the season, OSU honored its winningest senior class in history (which now currently stands at 48-4), but the Spartans played spoiler and came away with a 17-14 victory in Columbus even without star redshirt senior quarterback Connor Cook.

Right away, it was clear that Michigan State was playing with a chip on its shoulder as its defense smothered the Buckeyes. OSU limped to 75 yards of total offense in the first half, luckily tied with the Spartans at 7 after a fumble recovery led to a touchdown in the second quarter.

The Buckeyes came into the game with the best offense in the Big Ten but barely managed more than a fourth of their normal yardage per game as they finished with a measly 132 yards and only five first downs.

Momentum came at a premium throughout the cold and rainy night as both teams struggled to find a groove. OSU caught a major break when Michigan State fumbled a punt return, which led to another touchdown and a 14-7 lead heading into the fourth quarter. However, the Buckeye offense never threatened again as the Spartan rushing attack imposed its will on a beleaguered defense in the final 15 minutes of play.

For the game, the Buckeyes were led by redshirt sophomore quarterback J.T. Barrett, who finished with 46 yards passing and a touchdown, as well as another 44 yards on the ground.  Junior running back Ezekiel Elliott, who came into the game with Heisman Trophy aspirations, only managed 33 yards and a touchdown on 12 carries, of which only two came in the second half.

However, despite the multiple miscues and shortcomings of OSU, Michigan State’s fantastic performance should not be overlooked. The Spartans had a simple gameplan and stuck to it: stop the Buckeye rushing attack, impose their will through their own rushing attack and own time of possession.

Michigan State finished with 203 yards rushing for game, led by redshirt sophomore running back Gerald Holmes with 65 yards and a touchdown on 14 carries. Redshirt junior quarterback Tyler O’Connor stepped into the spot of Cook and also performed efficiently, passing for 89 yards and a touchdown on 7-of-12 passing with another 25 yards added on the ground.

With the victory, Michigan State took control of first place in the Big Ten East, and will play in the Big Ten Championship Game as long as it defeats Penn State next week. OSU, meanwhile, can still play in the Big Ten Championship Game if the Spartans get upset and the Buckeyes are able to bounce back and take care of business against archrival Michigan next week in Ann Arbor.

By the numbers:

108,975: The number of fans who braved some brutal weather to cheer on the Buckeyes at Ohio Stadium, a new attendance record.

48: The amount of wins by the senior class at OSU, the most in any four-year stretch in Buckeye history.

4: The amount of losses suffered by Urban Meyer after four seasons at the helm of the Scarlet and Gray.

2: Of those four losses, two have come at the hands of Mark Dantonio and the Michigan State Spartans.

1: Urban Meyer finally suffered his first regular-season defeat in the Big Ten Conference after starting 30-0 as a Big Ten coach.

2.93: The amount of yards OSU averaged per play on Saturday, the fewest it has since Meyer took over.

86: The total number of rushing yards the Buckeyes had against the Spartans. It is the lowest total OSU has registered inside Ohio Stadium since Oct. 1, 2011 against — Michigan State.