Wycombe Wanderers were powerless to prevent Oxford United gaining promotion to League One as they lost 3-0 at the Kassam Stadium.

A capacity crowd had turned out to watch what has been dubbed the M40 derby and it is a shame, if only for Wycombe fans, that a trip to Oxford will not be on the agenda next season.

That, in essence, is what the Chairboys were playing for but they never looked like condemning Oxford to a play-off place.

Chey Dunklley’s header and Chris Maguire’s penalty gave Oxford a 2-0 lead in the second half, before substitute Callum O’Dowda added a third in injury time as Oxford put the gloss their dominance had warranted on the scoreline.

While Oxford can prepare for life in the third tier of English football, Wycombe must take stock and go again in the fourth, as this defeat brought to an end to a season which has petered out somewhat.

The Chairboys arrived at the Kassam Stadium playing for little more than pride and the opportunity to put a dent in Oxford’s automatic promotion hopes.

In stark contrast the U’s had everything to play for and knew they would be guaranteed a spot in the League Two top three if they matched Bristol Rovers result.

Both Sam Wood and Luke O’Nien went through pre-match warm ups but neither were considered fit enough to feature for Wycombe. Oxford meanwhile were boosted by the return of League Two Player of the Year Kemar Roofe as he after the forward recovered from an ankle problem.

A dominant start from the hosts saw them almost take the lead inside two minutes after Anthony Stewart had conceded a needless corner.

Chris Maguire’s delivery was perfectly placed from the left and picked out Danny Hylton who turned just wide from six yards out.

Hylton had been named the supporters’ player of the year before kick-off and it was easy to see why in the first 10 minutes.

He again went close in the eighth minute as he collected a loose ball and drove at Jason McCarthy before dragging a low shot wide from 18 yards.

Oxford’s initial burst of attacking endeavour soon died away and the game became far less open as Wycombe developed a foothold in proceedings.

The host still possessed the greater threat going forward, but Wycombe were marshalling the twin attacking options of Hylton and Roofe.

Aaron Pierre in particular was enjoying the battle and was involved in a number of altercations with Oxford’s number 10 in the opening 45 minutes.

Hylton nonetheless looked the most likely of any of the 22 players on the pitch to find a breakthrough, and saw his third attempt of the match flash wide juts before the half hour.

A torrential rain shower had left the pitch sodden and Hylton reacted quickest to a skidding cross from the right to get in front of Stewart and connect with a flicked effort.

Roofe, who had been remarkably quiet in comparison to his strike partner, had a chance to Ryan Allsop from a free kick some 30 yards from goal moments later.

Much like Hylton, his radar was just off and he curled a decent effort wide of the upright with Allsop watching on despairingly.

Results elsewhere meant Oxford’s profligacy mattered little at the break, but they would have been disappointed to be drawing at the break.

The second half started brightly for Wycombe and they were presented with arguably the best chance of the game so far.

A Michael Harriman free kick from deep on the left enticed Benji Buchel to advance from his goal and the Yellow’s keeper failed to get a strong hand to the ball.

His punch fell to Stewart, and with Buchel stranded, the defender drove a low shot at goal which would have gone in but for the intervention of an Oxford defender on the line.

Oxford soon reasserted their dominance and were ahead to Dunkley’s towering header just eight minutes into the half.

The goal was simple in its exaction but priceless in its value as Dunkley got a run at the near post and powered an unstoppable header past Allsop from Maguire’s corner.

The tension of a goalless first 50 minutes gave way to an explosion of noise and the relief among the majority of the capacity Kassam crowd was palpable.

In truth, oxford had dominated proceedings and were unfortunate not to be out of sight by the time they got the goal.

The slender lead did, however, ensure Wycombe still had a chance of spoiling their local rivals’ party and manager Gareth Ainsworth knew it.

His reaction to the goal was to throw on Gozie Ugwu and Max Kretzschmar and change to a 4-3-3 in an attempt to find an elusive leveller.

All those hopes would be extinguished with 20 minutes to play though after Pierre had bundled Roofe over in the box to give Oxford the chance to double their lead.

The challenge was clumsy but whether or not it warranted a spot-kick being awarded was debateable.

Oxford didn’t care, and neither did Maguire as he calmly placed he ball low to Allsop’s left as the keeper dived right to ensure the U’s were heading to League One.

There was a late chance for Ugwu as he lifted a bouncing ball over Buchel’s head, but it dropped into the side netting and Wycombe’s fight was done.

To add insult to injury Oxford would add a fine individual third through substitute O’Dowda as he battled past Jombati and lifted a delicate chip over Allsop.

The 21-yer-old had shown excellent determination to shake off opponent and finish with unerring calm.

The customary pitch invasion followed the full-time whistle of a win which never looked in doubt from the moment the U’s took the lead.

But who could blame the Oxford fans for getting carried away on this headiest of days for Wycombe’s local rivals.

Oxford United: Buchel; Kenny, Dunkley, Wright, Ruffles, Macdonald (O’Dowda 78), Sercombe, Lundstram, Maguire, Roofe (Waring, Hylton (Bowery 85)

Subs not used: Slacombe; Mullins, Ashby, Roberts

Wycombe Wanderers: Allsop; McCarthy, Stewart, Pierre, Jombati, Rowe, Bean, McGinn (Kretzschmar 61), Harriman, Thompson (Ugwu 61), Hayes (C) (Liburd 72)

Subs not used: Siegrist; Sellers, Sellars

Bookings: Rowe (34 foul on Maguire), Hylton (60 refusing to retreat 10 yards at a free kick), Jombati (60 arguing with officials), Stewart (69 foul on Roofe)

Referee: Keith Stroud

Attendance: 11,815