ANN ARBOR, Mich. -- Denard Robinson was spectacular, accounting for 426 yards of offense and four touchdowns.
It almost wasn't good enough to help No. 19 Michigan avoid an upset against Air Force.
Robinson ran for 218 yards and two touchdowns, threw for 208 and two scores as the Wolverines held off the Falcons for a 31-25 win Saturday.
"It's always good to win," Michigan coach Brady Hoke said. "Sometimes they're not very pretty, and this would be one."
Robinson became the first player in major college football to have at least 200 yards rushing and 200 passing in three games, according to the NCAA records book. Former Texas star Vince Young was the only other player to pull off the feat twice.
The speedy senior, who joked last month that he could beat Usain Bolt in a 40-yard dash, scored on a 79-yard run on his second snap and ran for a 58-yard score on the first play of the second half.
"I don't want to sound cocky, but when I get in front on a big run, I don't think anyone is going to catch me," Robinson said.
The Wolverines (1-1) were humbled in their opener, losing 41-14 to Alabama in a game that might've been more lopsided that the score indicated. They did bounce back, but had a tough time beating the Falcons (1-1) in a game they were favored to win by three touchdowns.
Cody Getz's third TD and a 2-point conversion pulled Air Force within three early in the fourth quarter.
The Falcons had one last shot to snap their 19-game losing streak against teams in The Associated Press Top 25, but turned the ball over on downs with 1:28 left at their 35 when Jake Ryan batted down a pass.
Ryan wore No. 47 with a Michigan Legends patch, honoring Bennie Oosterbaan, whose number was previously retired by college football's winningest team.
"He was a great athlete, he was a three-time All-American and he was definitely a Michigan Man," said Ryan, who had a game-high and career-high 11 tackles. "I want to honor all of that. I know he made a lot of great defensive plays, and I got a chance to make a few at the end."
Robinson, who played poorly and got beat up by the defending champion Crimson Tide, was asked to run early and often and did it well.
He had his fourth game with at least 200 yards rushing and trails only Mike Hart's school record by one. His 426 yards of total offense ranked fifth in school history, trailing four of his own performances.
Robinson also showed he could make plays through the air.
He was 14 of 25 for 208 yards with two TDs, connecting with freshman tight end Devin Funchess on a 30-yard pass in the second quarter and former quarterback Devin Gardner on a 7-yard toss to put Michigan ahead 28-17 in the third quarter. Gardner caught five passes for 63 yards and a TD. Funchess, playing for the injured Brandon Moore, had 106 yards receiving and a score on four receptions.
Robinson also threw an interception, a high pass that went off Vincent Smith's hands.
The Wolverines responded just well enough to prevent a collapse after Getz made it 28-25 and silenced most of the 112,522 fans at the Big House.
Michigan kicked a field goal and stopped Getz's fourth-down run on the next two possessions, but Robinson threw short of Gardner on a third down -- a play that was ruled a catch before video review overturned it. The Wolverines defense didn't let Air Force drive for the go-ahead TD after having a lot of problems with its option attack, especially on pitches to the outside.
Defensive end Frank Clark had a lot to do with helping the Wolverines seal the victory. On Air Force's last first down, Clark deflected a pass and he stopped quarterback Connor Dietz for a 1-yard loss on its final third down.
"Frank was active," Hoke said. "Frank was disruptive, especially at the end of the game."
After suspending him for one game, Hoke allowed Clark to play just days before he faces a charge of stealing a laptop from a dorm room.
Hoke also reinstated Fitzgerald Toussaint after making him miss the opener because he pleaded guilty to drunken driving. Toussaint struggled, running for just 8 yards on seven carries, but Hoke said it wasn't the running back's fault.
"I don't think he got a chance to get started because we didn't block enough," Hoke said.
Air Force blocked Michigan's bigger players just fine, knocking defensive linemen off the ball, sealing linebackers and keeping rushers away from its QB.
Dietz was 10 of 19 for 127 yards and ran for 61 of his team's 290 yards rushing. Getz had 130 yards rushing after running for 218 yards and three scores in last week's 49-21 win over Idaho State.
Falcons coach Troy Calhoun, who has led the service academy to a program-record five straight bowls, did not make himself or his players available for interviews after the game.
Former Blinn College coach Brad Franchione describes Panthers star Cam Newton's transformation from playing at the junior college in 2009 to playing in Super Bowl 50.
North Carolina inked the No. 34-ranked recruiting class in the 2016 cycle with one ESPN 300 (Tomon Fox) and four more four-stars. The class of 2017 is well on the way to besting the 2016 class with four ESPN Jr300 verbals less than one week after signing day with the most recent being in state receiver Ryan Jones Friday.
Oregon running back Thomas Tyner has decided to take a medical retirement after sitting out all of last season because of a shoulder injury.
It hasn't been an easy road at USC for Pat Haden, the former Trojans quarterback turned athletic director, but at 63, he's earned the right to relax.
Readers want to know about all "downer" material, Iowa cutting ties with Stanford and an inherent southern bias in recruiting rankings.
What did we learn from the Big 12 conference sessions this week? Jake Trotter sorts it out in this edition of the mailbag.