Penn quarterback Billy Ragone threw three interceptions in the first 20 minutes, and five for the game. Penn wide receiver Conner Scott caught 12 passes for 161 yards.
"We just have to hedge our bets and prepare both of our quarterbacks going forward because the way Billy plays, he gets bumps and bruises a lot," Bagnoli said.
Backup Andrew Holland was subbed in for Ragone twice as Bagnoli tried to jump-start the Quakers offense. Holland engineered Penn's second-half comeback, completing 18 of 28 passes for 191 yards.
"It's just a matter of running each play," Holland said. "It's my last year, I'm a senior, and I've been around the block."
The Leopards scored all of their points off Quaker turnovers, negating Penn's 25-13 advantage in first downs and 423-236 advantage in total yards.
Lafayette quarterback Zack Zweizig started in place of Andrew Shoop, who was suspended for violating team rules. Zweizig was 13 for 20 for 134 yards, two touchdowns, and two interceptions.
"We didn't want Penn to know about Zack being in there and be able to draw up all kinds of blitzes on him," Lafayette coach Frank Tavani said.
Lafayette led by 21-0 after the first quarter, and held that lead until Ragone hit Lyle Marsh for a 4-yard scoring pass with 37 seconds left in the first half.
After the Leopards took a 28-7 lead into the fourth quarter, the Quakers rallied with two fourth-quarter touchdowns. Ragone's 1-yard touchdown run with 5 minutes, 24 seconds to play was the final scoring. The Quakers got the ball back on their own 20-yard line with 2:30 remaining, but cornerback Darius Safford's second pick of the game with 1:19 left sealed the game for Lafayette.