Louisville (8-3) posted its third win in the past four games and improved to 4-2 on the road. In his third start, Bonnafon rushed for two touchdowns and passed for one.

Notre Dame (7-4) lost its third consecutive game and has dropped four out of five games since starting the season at 6-0. The three-game losing streak marks longest slump for the Fighting Irish since 2010, which was coach Brian Kelly's first year at the helm.

"We've lost back-to-back games because we couldn't put down a ball and kick it 32 yards," said Kelly, who cited last week's overtime loss to Northwestern. "We lost the game by four points at Florida State. So three of our four losses are easily games that we could win with a lot of freshman playing a lot of football."

Golson threw for 236 yards and two touchdowns with one interception. Running back Tarean Folston added 134 yards and a touchdown on the ground.

The biggest stars belonged to Louisville, who leaned on a freshman quarterback after starter Will Gardner sustained a season-ending knee injury on Nov. 8 at Boston College. Bonnafon threw for 180 yards and a touchdown and rushing for 35 yards and two touchdowns out of the pocket.

Louisville running back Brandon Radcliff rushed for 136 yards and a touchdown, including a 15-yard score early in the fourth quarter that proved to be the difference.

"I'm just real happy for our players," Louisville coach Bobby Petrino said. "We knew it was going to be a fourth-quarter game.

"We felt like we could run the ball, and we did it late in the game, which is really important."

Louisville led 17-6 at halftime after two rushing touchdowns by Bonnafon from 12 yards and 8 yards. After Golson threw an interception to Louisville cornerback Charles Gaines early in the second quarter, the Cardinals capitalized with a 26-yard field goal by John Wallace.

Notre Dame closed the gap to 17-13 with 12:47 remaining in the third quarter when running back Tarean Folstonsprinted left for a 6-yard touchdown. After a defensive stop on Louisville's next possession, Notre Dame regained a 20-17 lead on a 7-yard touchdown pass from Golson to wide receiver Corey Robinson with 9:20 remaining in the third quarter.

Bonnafon said he and his teammates never hesitated after relinquishing the lead.

"Things went a little rough there for a minute, but we just kept our composure," Bonnafon said. "We knew that we were going to turn it back around if we kept executing our game plan."

Louisville seized a 24-20 lead on the next possession when Bonnafon lofted a 21-yard touchdown pass to wide receiver DeVante Parker. The Cardinals increased the lead to 31-20 on Brandon Radcliff's 15-yard rushing touchdown on the first play of the fourth quarter.

Notre Dame narrowed the deficit to 31-28 after one broken play ended with a touchdown and another broken play ended with a two-point conversion.

Wide receiver Will Fuller hauled in a 28-yard touchdown on a deflected pass that was intended for Robinson, and Golson scrambled for a two-point conversion with 11:17 to go in the fourth quarter.

Notre Dame linebacker Nyles Morgan was ejected in the fourth quarter after delivering a helmet-to-helmet hit against Bonnafon, who remained in the game.

"He did not need to go high," Kelly said. "It was a careless, careless mistake."

NOTES: Notre Dame DL Sheldon Day (knee) and LB Joe Schmidt (ankle) missed the game because of injuries. ... LB Jaylon Smith switched from No. 9 to No. 38 to honor Schmidt, a senior who watched his home finale from the sidelines. ... Louisville WR James Quick returned from a one-game suspension for violating team rules. ... NotreDame S Drue Tranquill started ahead of S Max Redfield. ... Louisville QB Will Gardner is slated to undergo knee surgery in the next few weeks to repair a season-ending injury that he sustained Nov. 8. ... Pro Football Hall of Famer Paul Hornung tossed the coin before the opening kickoff. Hornung won the 1956 Heisman Trophy withNotre Dame.