Bradford held on for a 1-1 draw at high-flying Crewe despite playing most of the second half with 10 men following Alex Pattison's dismissal.
Pattison was shown a red card shortly after he had cancelled out Omar Bogle's opener for Crewe, which came early in the second half.
Bradford were the better side in the opening 45 minutes, with Bobby Pointon wasting a glorious chance in the first minute. Lewis Richards' lofted pass sent Pointon clear on goal, but he fired straight at advancing Crewe goalkeeper Filip Marschall.
Crewe, too, were wasteful in front of goal when, after Max Conway teed up Max Sanders whose effort was blocked, Jack Lankester sliced the follow-up high and wide.
Bradford, who were without suspended leading scorer Andy Cook, made the most of the windy conditions, with Pattison's goalbound drive from the edge of the box blocked by Zac Williams before Pointon flashed a shot across the face of Marschall's goal.
Calum Kavanagh went even closer just before the break when he smashed a left-footed shot against the upright after Pointon pulled the ball back from the byline.
But it was Crewe who took the lead in the 47th minute when Bogle finished into an empty net at the far post after substitute Matus Holicek flicked on Ryan Cooney's free-kick.
Bradford were level soon afterwards when Pattison drove in a low finish home from 10 yards following Jay Benn's pullback.
The goalscorer was heading down the tunnel two minutes later in controversial circumstances. Referee Ben Toner showed the midfielder a straight red card after he kicked a loose ball at Bogle while he lay on the ground following a Richard Smallwood foul.
Williams drove an effort wide as the Bantams' box came under siege during six minutes of added time, but the visitors held on for a point, although their winless run extends now to six games.
Match report supplied by PA Media.