Both sides shared the points at the Utilita Energy Stadium after substitute Danny Rowe cancelled out Nathan Delfouneso’s opener.
The visitors looked to be heading home with a seventh consecutive win after the Wanderers sub gave his side a deserved lead.
But with the Bantams throwing everything into the box, they grabbed an equaliser in added time.
Ian Evatt made one change to the team to face Bradford City at the Utilita Energy Stadium with Lloyd Isgrove coming into the starting eleven in place of Nathan Delfouneso who was named amongst the substitutes.
The game started immediately in an entertaining fashion with both sides probing into each other’s areas during the early stages.
Eoin Doyle fired just over the bar against his former club after being played in by Dapo Afolayan, while at the other end Alex Baptiste slid in to dispossess Ollie Crankshaw after the wideman threatened to put the ball into the danger area.
A good move in the middle set up Gethin Jones who got in behind Connor Wood on the right, but the full-back’s centre was too powerful for Doyle to reach.
Afolayan was played in by an impudent backheel from Baptiste and with midfielder’s searching cross just evaded Isgrove at the far post.
Andy Cook shot over from just outside the box after Callum Cooke charged into space when Wanderers had lost possession inside their own half.
Cook got in behind Baptise and headed into the danger area but a timely intervention by Ricardo Almeida Santos took the ball off the striker with a superbly timed sliding tackle.
Almeida Santos had a powerful shot blocked by Paudie O’Connor after he lost his marker with a spin and probed forward.
Afolayan wasn’t able to control Kieran Lee’s pass sufficiently enough to volley on target and the ball went behind for a goal-kick early in the second half with Wanderers looking to go on the front foot.
Afolayan forced out a fantastic save from Sam Hornby after Declan John jinked his way into the box. The on-loan West Ham man’s right-footed curler was kept out at full stretch.
Almeida Santos and Paudie O’Connor both were shown yellow cards after clashing just after the hour mark.
After a sustained period of Wanderers pressure, Hornby pulled off an important save to keep out an Almeida Santos strike, while seconds later Doyle headed John’s left sided cross wide of goal.
Isgrove volleyed wide after Afolayan’s cross into the box caused problems in the Bantams’ defence.
Wanderers made their first change with 12 minutes to go when Delfouneso came on for Sarcevic.
Bradford sub, Rowe lashed a volley over from distance as the hosts had a rare foray into the Wanderers’ box.
Wanderers took the lead with seven minutes to go when Delfouneso steered the ball over the line after Doyle’s looping effort was headed goalwards. The Wanderers sub had the decisive touch to make sure of the goal and it was no less than Evatt’s men deserved.
Gilks made a stunning save to preserve Wanderers’ lead just a couple of minutes later when he scooped out Anthony O’Connor’s header at the far post.
Wanderers made a double attacking sub with Arthur Gnahoua and Shaun Miller on for Isgrove and Doyle with three minutes of time remaining.
Rowe’s thunderous free-kick came off the wall and into the path of Elliot Watt whose effort was blocked by Williams.
Rowe managed to get on the score sheet though to get a last gasp equaliser for the hosts firing in from the angle beyond Gilks.
It was a hard result to take as Wanderers had done more than enough to pick up the victory.
Bradford City:
Hornby, P. O’Connor (c), Canavan, A. O’Connor, Cooke (Rowe 70), Vernam (Clarke 70), Watt, Sutton, Wood, Cook (Donaldson 82), Crankshaw (Stevens 82)
Subs Not Used: O’Donnell, Clarke, Cousin-Dawson, Scales.
Goal: Rowe (90+3)
Bolton Wanderers:
Gilks, Jones, Williams, Almeida Santos, Doyle (Miller 87), Sarcevic (c) (Delfouneso 78), Isgrove (Gnahoua 87), Baptiste, John, Lee, Afolayan.
Subs Not Used: Maddison, Tutte, Brockbank, Thomason
Rowe: Delfouneso (83)