PRINCETON — The situation that Caleb Heavner inherited as Denison’s quarterback was ideal for any passer. The sophomore was forced to step into a starting role due to Zaelin Wimbish’s injury and found himself surrounded with weapons.

Three capable running backs. Multiple athletic receivers. A reliable H-back. And a senior offensive line.

All of them have worked in concert for his three starts, and the results have been music to the Yellow Jackets’ ears.

“Zaelin’s helped me out so much, even before he was hurt,” Heavner said. “Our offensive line is amazing. I think I got hit maybe two times. Our offensive line is awesome.”

The latest performance — 14-of-19 passing for 216 yards and three touchdowns to go with a pair of scores on the ground — helped guide Denison to a 52-31 victory over Princeton in District 7-5A (II) action at Jackie Hendricks Stadium.

“Everybody’s on the same page. The offensive coaches did a really good job of game-planning,” Denison head coach Chad Rogers said. “With this offense, we’re capable of big things. Every time we play we seem to get a little bit better, grow up a little more.”

Asa Osbourn had 15 carries for 164 yards and two touchdowns, Keleon Vaughn finished with seven catches for 106 yards and a TD and Jadarian Price and Tre Rhodes each caught touchdown passes for Denison (3-2, 2-1), which surpassed 500 yards (315 rushing and 216 passing) for the second time in three games.

“Keleon, Keebler, Tre, all our running backs could be starters, it just makes my job easier,” said Heavner, who is completing 70 percent of his passes and hasn’t thrown an interception. “Our practices are pretty intense so that when it comes to the games they aren’t that tough to handle.”

Jay Hill totaled 193 yards and three touchdowns on 29 carries for Princeton (2-2, 1-1), which split quarterback duties between Isaiah Sadler and Brendon Strickland with mixed results.

Three plays into the second half Vaughn came up with an interception on a Strickland throw to the flat that bounced off the receiver’s hand and then was tipped up by safety Keebler Wagoner to give the Jackets the ball at midfield.

Heavner connected with Vaughn on a 25-yard pass when it was fourth-and-nine to keep the drive going and he scored on a one-yard sneak for a 46-17 lead after hitting Wagoner on the conversion.

Hill had a 15-yard touchdown run late in the third quarter and Princeton was in position for another after recovering an onside kick. But the Panthers turned it over on downs to end the frame instead of making it a two-possession game.

Osbourn did the heavy-lifting on the ensuing 85-yard drive to essentially seal the win. He had 77 of the yards and the last three carries, including a 10-yard score right up the middle with just over nine minutes remaining.

Princeton notched it final points on Strickland’s 11-yard TD pass to Daniel Torres three minutes later but another turnover on downs ended any chance of a comeback by the Panthers.

After scoring on two of their first three plays, the Jackets finished off the first half with a 38-17 advantage.

Most of the damage was done in the first quarter as Denison scored on all four of its possessions.

Princeton opened the second quarter with a drive that ended on a one-yard TD plunge by Hill to make it 28-10.

Denison responded with a drive that was on the verge of reaching the end zone but stalled at the 2 and Reece Stange kicked a 21-yard field goal in the middle of the quarter.

After the Panthers were forced to punt, Denison needed just five plays to go 89 yards. The last two plays were a 20-yard run by Osbourn followed by Vaughn’s 47-yard catch-and-run touchdown for a 38-10 margin with 2:49 left in the half.

Heavner scrambled to his right and found Vaughn at the 25. The junior leapt in front of a defender, shook off the tackle and raced to the end zone.

The Jackets couldn’t hold that lead going into the break as Hill broke away for a 49-yard TD run to get Princeton back within three scores and a chance to regroup in the locker room.

Denison got the ball to open the game and started with a 43-yard run by Price, who finished with 14 carries for 74 yards. Heavner followed with a keeper to the right and then cut back for a 35-yard touchdown just 24 seconds in.

Princeton’s opening drive was aided by a fourth-and-one penalty but the Panthers didn’t go much farther. Jakalen Fields came screaming off the right edge fast enough to block Nico Ledesma’s punt and fall on it before it left his foot at the Princeton 38.

On the first play, Heavner hit a wide-open Rhodes deep over the middle for a 14-0 lead.

The Panthers nearly matched the score and had first-and-goal at the eight. The Jackets stuffed Hill for a three-yard loss before two incompletions led to Ledesma’s 28-yard field goal.

Osbourn capped the ensuing possession with a nine-yard run to the left side as he dragged a defender into the end zone with 1:55 to go in the first.

Cam Wheeler came up with an interception at the Denison 42 and returned it down the right sideline to the Princeton 22 to set up the Jackets’ fourth TD drive of the quarter. Heavner hit Price in the left side of the end zone from five yards out and the 28-3 lead with 11 seconds remaining in the quarter.

Heavner went 12-of-17 for 187 yards and three TDs through two quarters while Price and Osbourn each were half-way to 100 yards on the ground. Vaughn had five catches for 77 yards and a touchdown at the break.