EVANSTON, Ill. -- Home or away, Michigan State keeps finding ways to win.
Kirk Cousins threw for a season-high 331 yards and three touchdowns, and the Spartans (No. 7 BCS, No. 8 AP) rallied to beat Northwestern 35-27 and remain unbeaten on Saturday.
B.J. Cunningham made an acrobatic grab for the go-ahead touchdown with two minutes left. Edwin Baker added a 25-yard scoring run and Eric Gordon intercepted Dan Persa in the closing seconds to seal a wild win.
Playing out of state for the first time this season, the Spartans scored 28 points in another strong second half.
"We are a second-half team, guys," Cousins said.
They came up big again in the final two quarters to keep their perfect record intact, after scoring 23 unanswered to beat Illinois 26-6 the previous week.
Michigan State trailed the entire way until Cunningham's grab on a ball that he and Northwestern's Brian Peters tipped in the end zone.
Cunningham (eight catches, 113 yards) corralled the ball as he fell to the ground, giving Michigan State its first lead at 28-27.
"As I was falling back, I just had to keep my eye on the ball," he said. "Got it with my left hand. Just grabbed it. Fell on my back and just caught it. It was just an exciting play, a big adrenalin rush."
That catch on a first down at the 9 capped an 88-yard drive in which Cousins was 7 of 8 with 98 yards.
After a drive by the Wildcats went nowhere, Michigan State (8-0, 4-0 Big Ten) took over at the Northwestern 31, and Baker broke through from the 25 to make it 35-27 with 1:07 left.
Northwestern (5-2, 1-2) had one more chance, but Gordon's interception with 44 seconds left preserved the win, and the Spartans cleared one big hurdle.
They'll face another next week when they visit Iowa in a game that could go a long way toward determining the Big Ten champion.
If they beat the Hawkeyes, the Spartans will be in good position to claim their first conference title since they shared it in 1990. Then again, they might be aiming a little higher, considering they're off to their best start since the 1966 team won its first nine on the way to a 9-0-1 record.
Coach Mark Dantonio was back on the sideline after working the previous two games from the pressbox following his mild heart attack last month, and he probably didn't like what he saw for much of the game, particularly in the first half.
"If you want to win championships," Dantonio said. "If you want to go 8-0, we've got to do it the hard way at some point."
That's exactly what Michigan State did, with Northwestern scoring the first 17 points and leading 17-7 at halftime.
The Spartans had trouble containing the Wildcats' Persa, who ran for 89 yards and three touchdowns. He also completed 18 of 29 passes for 187 yards but got sacked eight times and threw the late interception that sealed the outcome.
Persa's 6-yard run late in the third quarter made it 24-14, but Michigan State responded with a 75-yard drive that ended with a 15-yard pass from Cousins to Mark Dell (nine catches, 109 yards) with 13:12 left.
That came right after a fake punt on fourth-and-11 at the Northwestern 36, when Aaron Bates hit Bennie Fowler with a 21-yarder on what looked like a blown coverage by the Wildcats' Jordan Mabin.
"They put their starting receiver in and we had talked all week that there was going to be a fake punt and they were going to throw it," Northwestern coach Pat Fitzgerald said. "Did we expect that fake punt? No, because we had never seen them do it before."
Michigan State initially planned to have the offense go for it, but called time and took a 5-yard delay of game penalty to create space for the play.
"It was a little nerve-racking," he said. "Right when the ball was in the air, the wind took it a little bit and I was able to run under it."
For Bates, it was another clutch completion. He also had the winning pass on a fake field goal to beat Notre Dame last month.
"It's been great," Bates said. "That's something we're capable of doing."
Michigan State was without suspended cornerback Chris L. Rucker and lost receiver Keshawn Martin to a knee injury in the first half.
Nike Men's Michigan State Spartans Green/Grey Team Issue Performance PoloShop
South Carolina has decided to give up Saturday's home game against No. 7 LSU because of devastating floods that have hit the state, moving the game to Baton Rouge.
West Virginia All-Big 12 safety Karl Joseph is out for the remainder of the season after injuring his knee during a non-contact drill in Tuesday's practice.
Rutgers has reinstated senior wide receiver Leonte Carroo a day after an assault charge against him was dropped.
Tennessee senior wide receiver Alton "Pig" Howard has been dismissed from the team for a violation of team rules, coach Butch Jones announced.
UCLA junior linebacker Myles Jack has withdrawn from school and will enter the NFL draft, making the decision just weeks after suffering a season-ending knee injury.
Police charged a former Michigan football player with three felonies Wednesday related to an accusation that he filmed part of a sexual encounter with a woman without her knowledge or consent.