Numbers lie (big box):
The offensive per-play numbers weren't spectacular for Michigan State, but this is as close to dominating a game as MSU has come during Big Ten play. Le'Veon Bell was generally able to put the offense in convertible position on second and third down, and Andrew Maxwell found some receivers for big gains when he had a little time to find them. Eight of Maxwell's 22 completions went for 15+ yards. Maybe they should have done more against the most generous pass defense in the conference, but MSU was able to convert on third down (8 for 17) and put together extended drives.
When Northwestern had the ball, their vaunted rushing offense was almost entirely contained and their passing attack was limited. The MSU defense held the Wildcats to just 3 third down conversions in 14 attempts. MSU defenders posted 8 pass break-ups and 4 QB hurries, as part of a very-solid-against-a-spread 23.9% disruption percentage (24.4% on the other side of the ball, for the record).
The 10-yard differential in average starting position says a lot about the way the game went when MSU wasn't turning the ball over (although the two times MSU gave the ball up on the goal line skews that some).
All that was more than offset by MSU's 4 turnovers--5 turnovers, really, when you consider the failed 4th and goal from the 1. In light of that differential in scoring opportunities--and the 7 points Northwestern scored off the pick 6--it's actually kind of amazing the game was even as close as it was.
Chris has covered the rest of it in great detail, and I fully endorse his message. (I also endorse not voluntarily giving the ball up when your offense actually has some momentum late in the game.) This has been a season that defies analysis--i.e., the wrong season to start writing a weekly statistical football column.