Bradford, playing with 12 men for most of the game, never got anywhere near their best form, but credit has to go to Cas, who not only defended with tremendous determination but also played the more incisive attacking rugby.
Bradford took the lead with a Steve McNamara penalty after four minutes, but the more significant moment came eight minutes later when their winger Matt Calland was sent off for slinging a punch at his opposite number, Chris Smith.
Calland had tackled Smith illegally while he was in the air fielding a kick. Smith's retaliation earned him 10 minutes in the sin-bin, but the blow that Calland landed saw him dismissed permanently.
There was a further setback for the Super League champions when Castleford took the lead, Brendon Tuuta driving over from close range and Brad Davis kicking the conversion.
With Smith back on the field to give Castleford a one-man advantage, Bradford's plight deepened when Jason Critchley ran on to Tuuta's pass and went 40 yards to score. Davis missed the kick this time, but Mike Ford soon put over a drop goal to tighten Castleford's grip on proceedings.
Castleford had plenty of defending to do before half-time, but they held firm until the 39th minute when James Lowes did what he has done so often this season by ploughing over from dummy-half. Paul Loughlin, kicking in place of the substituted McNamara, brought his side to within three points at the break.
When Brian McDermott pushed Davis over soon after the break, the Castleford stand-off added the two points himself. Smith then hit Bradford with a winger's try of the highest class that Davis improved.
Mike Forshaw grabbed the try that brought Bradford back into it. He went over again only to be penalised for a double movement, and Castleford's tigerish tackling kept Bradford at bay for the remaining 10 minutes until Davis wrapped it all up with an interception try. For the Bulls a season that had seen them dominate all domestic opposition had ended with a barely believable sequence of three defeats.
Bradford: Spurce; Calland, Loughlin, Peacock, Ekoku; Paul, Tomlinson; McDermott, Lowes, Reihana, Forshaw, Dwyer, McNamara. Substitutes used: Nickle, Wittenberg, Graham, Jowitt.
Castleford: Flowers; Gay, Vowles, Critchley, Smith; Davis, Ford; McKell, Russell, Sykes, Schick, Lidden, Tuuta. Substitutes used: Orr, Steadman, Tonks, Harland.
Referee: R Connolly (Wigan).Reuse content