Mark Trueman and Conor Sellars’ Bantams suffered defeat for the first time in nine matches - losing 3-2 at Exeter City in Sky Bet League Two.
Despite taking the lead twice throughout the encounter - City succumbed to two second-half strikes which halted their eight-game unbeaten streak.
Despite the Grecians starting brightly, it was the visitors who struck first after 18 minutes. Charles Vernam darted forward with the ball before laying it off to Callum Cooke inside the 18-yard area.
Cooke's shot was parried away to debutant Vernam, who smashed it into the empty net for his first goal in City colours.
The Bantams were then put under more pressure, with the hosts equalising in the 42nd minute.
Jack Sparkes delivered towards the back post and Pierce Sweeney leapt up and nodded into the top corner, beyond the reach of Hornby.
Mark Trueman and Conor Sellars’ side re-took the lead on the stroke of half-time - as Sweeney misplaced a pass to Jack Sparkes.
Ollie Crankshaw pounced on the loose ball and rounded goalkeeper Jokull Andresson, before slotting it into an empty net to claim his debut goal.
The visitors started the second half strongly and almost added a third in the 47th minute as Vernam weaved his way into the final third before striking a low effort, which was deflected away for a corner.
City looked to extend their advantage in the 50th minute as Cooke found some space inside the 18-yard area, before drilling his shot just past Andresson’s upright.
Hornby was called into action in the 60th minute as Robbie Willmott floated a ball to the back post.
Ryan Bowman, who was unmarked, put his looping header straight into the arms of the City stopper.
Bowman did level in the 61st minute, though, following a good spell of pressure.
Willmott found space to run down the left-hand side of the pitch. The 30-year-old cut inside and crossed towards Bowman - who headed home from close range.
Matt Taylor’s side were awarded a penalty in the 78th minute as Hornby brought down Bowman after the Exeter forward was played through.
Matt Jay stepped up and placed his spot-kick down the middle - ensuring that the Bantams would go back to West Yorkshire empty-handed.
EXETER: Jokull Andresson; Jack Sparkes, Pierce Sweeney, Tom Parkes, Lewis Page (Jake Caprice 25’); Robbie Willmott (Alex Hartridge 85’), Jake Taylor ©, Archie Collins, Josh Key (Joel Randall 71’); Ryan Bowman, Matt Jay (Ben Seymour 84’). Subs (not used): Jonny Maxted, Nigel Atangana, Alex Fisher.
GOALS: Sweeney (42’), Bowman (61’), Jay (79’ pen).
CITY: Sam Hornby; Connor Wood, Paudie O’Connor ©, Anthony O’Connor, Finn Cousin-Dawson (Niall Canavan 68’); Levi Sutton (Harry Pritchard 69’), Elliot Watt; Ollie Crankshaw (Kian Scales 86’), Callum Cooke, Jordan Stevens (Clayton Donaldson 73’); Charles Vernam (Rumarn Burrell 86’). Subs (not used): Will Huffer, Matthew Foulds.
GOALS: Vernam (17’), Crankshaw (45’).
REFEREE: Benjamin Speedie.