Updated

Starting quarterback Dan Persa was on the sideline in the second half because of a bum shoulder, and Northwestern's maligned defense was doing all it could to hold off Nebraska.

Surely, most fans wearing scarlet and cream at Memorial Stadium were thinking it was just a matter of time before the ninth-ranked Cornhuskers took control of this game.

The Wildcats wouldn't let it happen, hanging on to upset Nebraska 28-25 for their first win over a top-10 opponent in two years.

"A great program win for us," Northwestern coach Pat Fitzgerald said. "To come on the road and put together our most complete game of the year. ... Not perfect. Not a work of art. There are some things we can correct."

The critiques can wait, though. There was much to celebrate after this one.

Second-string quarterback Kain Colter ran for two touchdowns and passed for another as Persa cheered him on from the sideline.

Just as important, a defense that had been allowing 32 points and 432 yards a game held up its end.

"We got beat. It's that plain and simple," Nebraska coach Bo Pelini said. "They outplayed us, they outcoached us. What are you going to say? They won the football game. They deserve it. I give Northwestern a lot of credit. We didn't respond."

The loss to the 17-point underdog Wildcats (4-5, 2-4) dropped Nebraska (7-2, 3-2) into a second-place tie with Iowa and Michigan in the Big Ten's Legends Division. Michigan State moved into sole possession of first place with its win over Minnesota.

The win was Northwestern's first over a top-10 team since a 17-10 road victory over then-No. 8 Iowa on Nov. 7, 2009.

Persa injured his left shoulder in the second quarter when he was slammed to the ground by defensive end Eric Martin. Persa tried to play a couple more series, but he was on the sideline with his left arm in a sling after halftime.

Colter, who typically shares playing time with Persa at quarterback, took all but four snaps in the second half. He ran for 58 yards and completed four of six passes for 115 yards. Third-string quarterback Trevor Siemian came in and went 3 of 4 for 67 yards.

"I feel like we could really go into this game and make a statement," Colter said. "We had a great week of practice, came into the game with a great game plan and a lot of focus. We just went out there and executed. We really wanted this game."

Jeremy Ebert caught six passes for a career-high 147 yards and went over the 2,000-yard mark for his career on an 81-yard touchdown play that put the Wildcats up 21-10 early in the fourth quarter.

After the Huskers had pulled to 21-18, Colter scored from the 1 with 1:34 left to finish a 13-play, 66-yard drive that chewed more than 7 minutes off the clock.

"I give it up to our O-line," Ebert said. "We dominated the line of scrimmage. That final drive, for us to score, that was all them."

Nebraska, missing Jared Crick and two other defensive linemen because of injury, couldn't stop the running of Colter, Jacob Schmidt and Treyvon Green on Northwestern's last touchdown drive.

"We're thin up front," Pelini said. "They were just getting the push. It looked like we'd have them stopped for no gain and it'd leak for 3 or 4 yards."

Colter converted a fourth-and-1 with a 4-yard run around right end to the Nebraska 14, and five plays later the Wildcats were in the end zone.

Persa, who was 9 of 14 for 79 yards in the first half, slapped Christian Jones on the helmet, high-fived Drake Dunsmore and gave a quick hug to Colter as they came off the field.

Taylor Martinez, who passed for 289 yards and two scores, hurriedly moved Nebraska down the field. He hit Kenny Bell for a 14-yard touchdown with 18 seconds to play, but Charles Brown recovered the onside kick and Northwestern ran out the clock.

Nebraska finished with a season-low 122 yards on 35 carries, the third time this season it did not rush for at least 200 yards.

The Wildcats bottled up Nebraska running back Rex Burkhead and forced two costly turnovers in the first half.

Burkhead, who had 100-yard outings in five of his last six games, was limited to 69 yards on 22 carries.

Burkhead fumbled for the first time this season after the Huskers had driven to the Northwestern 5. Jack DiNardo reached in and stripped the ball, and Tyler Scott recovered.

Northwestern went nowhere after the turnover and punted into the wind, setting Nebraska up just inside the 50. But Quincy Enunwa got hit hard by Jeravin Matthews after catching a 25-yard pass, and Ibraheim Campbell recovered for the Wildcats.

"We had a lot of passion in practice and that really got spread around," defensive end Quentin Williams said. "Really, the defense and the whole team collectively really put our foot down and said enough is enough. We really needed to come out here and play a complete game, defense especially."

Northwestern kept alive its hopes of being bowl eligible for a fifth straight year. The Wildcats have no more road games and finish with Rice, Minnesota and Michigan State.

"I said it after last week, that if we wanted to make this season special we had to make it a November to remember," Fitzgerald said. "We're two steps up the mountain. But this one will go for naught if we're not humble."