Bradford won for the third time in the league this season as they came from a goal behind to defeat Northampton.
After an uneventful first half, Michael Jacobs put the Cobblers ahead with a spectacular strike from 35-yards.
However, Bradford equalised soon afterwards when Andy Holt handled a cross from Michael Bryan and Craig Fagan converted the resulting penalty.
James Hanson grabbed the winner, heading in after Northampton failed to clear Kyel Reid's curling cross.
VIEWS FROM THE DRESSING ROOM
Bradford City manager Phil Parkinson told BBC Radio Leeds:
"It's a good feeling to win and I'm really pleased. It was a tough day, I felt in the first half we looked like a team that came into it on the back of a bad defeat last week, and when we conceded the goal we really got going.
"We didn't feel sorry for ourselves, Fagan kept a cool head to put the penalty in, and the second goal was a great delivery from Kyel Reid and James Hanson did what he does best and got in the six-yard box.
"We've worked on a lot of crossing and finishing and we've got players who can deliver quality."
Northampton Town manager Gary Johnson told BBC Radio Northampton:
"The lads are a bit gutted in the dressing room because we played some decent football at times and deservedly went 1-0 up.
"Their first goal has hit Holty in the nose. He's got a bloody nose to prove it. He was trying to show the ref and the linesman. He wouldn't punch himself in the nose.
"When you go away from home you could do without a poor decision like that. That got them back in the game."
Full Time The game is over, as the referee blows his whistle.
Free kick awarded for a foul by Craig Fagan on Nick McKoy. Free kick taken by Sam Walker.
Robbie Threlfall takes the direct free kick.
90:00 +2:15 Booking
Booking Ben Tozer is shown a yellow card.
Free kick awarded for a foul by Ben Tozer on Kyel Reid.
The referee gives a free kick against Craig Fagan for handball. Sam Walker takes the direct free kick.
Effort on goal by Jake Robinson from just inside the penalty area goes harmlessly over the target.
The referee gives a free kick against Bas Savage for handball. Matt Duke takes the free kick.
Effort from the edge of the area by Luke O'Brien goes wide of the right-hand post.
James Hanson concedes a free kick for a foul on Kelvin Langmead. Free kick taken by Andy Holt.
Corner taken left-footed by Michael Jacobs to the near post, Robbie Threlfall makes a clearance. Inswinging corner taken right-footed by Michael Jacobs from the left by-line to the near post. Corner taken right-footed by Michael Jacobs from the right by-line, clearance made by James Hanson.
Jake Robinson takes a shot. Save by Matt Duke.
Free kick awarded for a foul by John Johnson on Craig Fagan. Robbie Threlfall restarts play with the free kick.
Outswinging corner taken right-footed by Michael Jacobs from the right by-line to the near post, Robbie Threlfall manages to make a clearance.
Saido Berahnio is penalised for handball and concedes a free kick. Matt Duke takes the direct free kick.
Substitution Jake Robinson is brought on as a substitute for Chris Arthur.
Substitution Bas Savage joins the action as a substitute, replacing Ashley Westwood.
Corner taken by Michael Jacobs.
Substitution Luke O'Brien is brought on as a substitute for Michael Bryan.
Michael Jacobs takes a shot. Matt Duke makes a save.
The referee blows for offside against Craig Fagan. Free kick taken by John Johnson.
Assist by Kyel Reid.
68:27 Goal scored
Goal - James Hanson - Bradford 2 - 1 Northamp'n James Hanson grabs a headed goal from inside the six-yard box. Bradford 2-1 Northampton.
Free kick awarded for an unfair challenge on Craig Fagan by John Johnson. Free kick taken by Robbie Threlfall.
Michael Jacobs takes a inswinging corner from the left by-line to the near post, Liam Moore manages to make a clearance.
Michael Jacobs takes a inswinging corner from the left by-line played to the near post.
Substitution Nick McKoy comes on in place of Lewis Young.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.