Luton Town's impressive home form continued as they beat Birmingham City in a thriller at Kenilworth Road.
The visitors went ahead through DJ Campbell, but two goals in three minutes from Rowan Vine put Town 2-1 up at the break.
Neil Danns made it 2-2 in the second period, only for substitute David Bell to bring the house down with the winner nine minutes from time.
The visitors started the game in purposeful fashion and Markus Heikkinen had to be alert to slide in ahead of Cameron Jerome at the near post in the third minute after Danns' right-wing cross.
Jerome then beat Leon Barnett on the left four minutes later and squared to former-Town loanee Gary McSheffrey, but the ex-Coventry man mis-kicked from eight yards.
It was no surprise when Birmingham finally took the lead in the 14th minute as Campbell expertly held off Heikkinen, before drilling McSheffrey's angled cross into the bottom corner from 12 yards.
Campbell almost got in for his second when he robbed Heikkinen just inside his own half, only for Marlon Beresford to quickly leave his area to clear.
Instead, the hosts forced their first effort on goal in the 21st minute when Stephen O'Leary found Kevin Foley to cross for Steve Robinson, whose 15-yard volley went straight into the arms of Maik Taylor.
Sam Parkin nodded at Taylor in the 24th minute after another Emanuel corner, but three minutes later Luton drew level with Lewis Emanuel involved again.
The winger ran into the penalty area on to O'Leary's superbly weighted pass and fell under the challenge of Stephen Kelly.
Referee Jon Moss pointed to the spot and Vine stepped up to hit the ball low under the body of Taylor.
Two minutes later Luton were ahead as another Emanuel corner caused havoc in the box and after Barnett headed the ball down, Vine swept home from two yards.
But Birmingham proved they couldn't be written off as firstly Radhi Jaidi headed McSheffrey's 38th minute corner just wide and then Jerome, cutting inside Heikkinen from McSheffrey's pass, forced a fine save from Beresford from 20 yards a minute before the break.
Birmingham started the second half as they did the first as the lively Campbell immediately nipped ahead of Barnett to a long ball and turned Heikkinen, only to see his 20-yard shot hit the recovering Barnett.
The Blues saw wingers McSheffrey and Danns switch flanks as they attempted to get back into the game.
However, both sides struggled to create openings until Luton substitute Dean Morgan hit a 25-yard free-kick at Taylor in the 65th minute.
Sixty seconds later though Birmingham were level with an absolute peach of a goal.
Campbell created the chance by stealing in ahead of Barnett and laying back for Matt Sadler to cross.
Heikkinen got a head on the ball, but could only divert it to Danns, who, after one bounce, arrowed an unstoppable right-foot effort over his head into the top corner off the post from 16 yards.
Luton made a change by brining on Bell for O'Leary and the move proved a masterstroke as the sub hit the winner in the 81st minute.
Vine fed Sol Davis to cross from the left and when the ball went over Sam Parkin, Carlos Edwards tapped inside for the on-rushing Bell to sidefoot home from 12 yards.
The Hatters were given an almighty scare when Blues substitute Sebastian Larsson saw a speculative 45-yard cross deceive Beresford and come back off the far post, but they held on for an important win.