Bradford secured their place in the League One play-offs with a comfortable 2-1 win at Exeter which condemned the Grecians to relegation to League Two.
The Bantams can now look forward to a two-legged semi-final against Bolton after goals from Kayden Jackson and Antoni Sarcevic sealed the win.
For Exeter, it was a pretty dismal ending to their four-year stay in the third tier as they performed poorly in a must-win game. They would have stayed up with a win, with Leyton Orient only drawing at home to Burton.
Bradford took the game to Exeter from the outset and created several decent opportunities.
Their pressure finally told after 27 minutes when Jackson, making his 450th appearance for the club, was played through on goal by George Lapslie and rolled the ball under Jack Bycroft from 18 yards.
Exeter made a double change at the break and were instantly better, with Carlos Mendes Gomes firing straight at Sam Walker, but despite creating a few half chances, their fate was sealed after 80 minutes when Jack McMillan's poor back header sold Bycroft short and Sarcevic tapped the ball beyond the Exeter goalkeeper.
Josh Magennis pulled one back in stoppage time, flicking the ball home from Ryan Rydel's corner, but it was too little too late for the Grecians.
League One play-off schedule
Play-off semi-final first legs
Stevenage vs Stockport - Saturday May 9, kick-off 3pm
Bolton vs Bradford - Saturday May 9, kick-off 8pm
Play-off semi-final second legs
Stockport vs Stevenage - Wednesday May 13, kick-off 8pm
Bradford vs Bolton - Thursday May 14, kick-off 8pm
Play-off final
Sunday May 24, Wembley Stadium