Bradford City 1-2 Rochdale
Rochdale ended Bradford's 10-match unbeaten run as substitute Calvin Andrew poached an injury-time winner.
The visitors went in front early after Bradford goalkeeper Jordan Pickford was sent off for a challenge on Matty Done.
Ian Henderson dinked the resulting penalty against the bar, but Peter Vincenti slammed in the rebound.
Jon Stead levelled from close range and Bradford had the better chances before Andrew nodded in from Ashley Eastham's cross to snatch all three points.
The win, which followed back-to-back defeats in the league, lifted Keith Hill's side to eighth in the table, with Bradford remaining fifth.
Rochdale manager Keith Hill told BBC Radio Manchester:
"On a pitch like today it was down to a braveness, a physical braveness and a mental braveness.
"Let's be right, the pitch was horrendous and I think, without being disrespectful, that's shooting Bradford in their own foot.
"We knew it was going to be relentless, nothing changed when they went down to 10 men. The outfield remained the same - it was very difficult for us."