The Bantams looked to be heading for victory as the match was about to move into stoppage time when Bristol Rovers substitute Brett Pitman equalised with what Adams described an ‘unstoppable header’ from Antony Evans’s cross.
Bradford dominated the first half and deservedly went in front two minutes before the interval. Belshaw saved Yann Songo’o’s header from Callum Cooke’s corner and Charles Verman scored from the rebound.
Rovers equalised two minutes after half-time with a header from unmarked defender Alfie Kilgour but leading scorer Andy Cook restored City’s lead two minutes later with a close-range shot from Vernam’s before Pitman’s late equaliser for the visitors.
Adams said: “It was a really good performance for most of the game. We dominated Bristol Rovers and created so many good opportunities and really should have put the game to bed.
“It looked like we were going to get a third goal, but we didn’t and they caught us at the end with a cross into the box and a header that was unstoppable.
“We just need to be more clinical because we created some really good opportunities. Statistics tell you how much we have dominated the game, but the only ones that matter are the two goals on each side. We have been kicked in the teeth and Bristol have come way with an undeserved point.”
Bradford City: O’Donnell, Threlkeld, O’Connor, Songo’o, Ridehalgh (Foulds 30), Sutton, Watt (Scales 81), Gilliead, Cooke, Vernam, Cook. Unused substitutes: Canavan, Kelleher, Robinson, Cousin-Dawson, Lavery.
Bristol Rovers: Belshaw, Hoole (Thomas 45), Taylor, Kilgour, Anderton, Coutts (Nicholson 59), Whelan, Anderson, Evans, Saunders (Pitman 22), Collins. Unused substitutes: Westbrooke, Martinez, Clarke, Ward.
Referee: A Haines (Tyne and Wear).