QPR got their Championship promotion campaign back on track with a 2-0 win at Birmingham, while Derby's bid to reach the Premier League was rocked by a 1-0 defeat against Millwall on Saturday.
Harry Redknapp's team moved within six points of second placed Burnley, who face local rivals Blackburn on Sunday, thanks to a double from on-loan West Ham midfielder Ravel Morrison at St Andrews.
Former Manchester United trainee Morrison, who resurrected his career during a loan spell at Birmingham last season, scored from a fine 14th-minute free-kick and netted a simple second in the 72nd minute to leave his old club without a win in their last 12 home games.
It was a much-needed first victory in six matches for the west Londoners, who this week revealed a loss of Â£65.4 million following heavy spending in an unsuccessful attempt to avoid relegation from the top-flight last season.
At the iPro Stadium, third placed Derby missed a chance to increase the pressure on Burnley as they suffered a surprise loss to struggling Millwall.
A second half header from Steve Morison was enough to give Millwall only their second away win of the season and condemn Derby to their second defeat in eight days.
Ian Holloway's side stunned Derby in the 61st minute when Lee Martin crossed from the left and Morison stole in to head into an empty net from two yards.
Derby remain five points behind Burnley in the race for automatic promotion, while Millwall's second win in their last nine matches kept them one place above the relegation zone.
Dale Jennings claimed his first Barnsley goal as the struggling Tykes climbed off the bottom of the table with a 1-0 win over fifth placed Nottingham Forest at Oakwell.
Former Bayern Munich winger Jennings settled the contest with a powerful low drive from the edge of the area in the 51st minute to lift Barnsley to 23rd, two points from safety, and stretch Forest's winless run to five games in all competitions.
Royston Drenthe fired a second-half equaliser as sixth placed Reading fought back strongly to earn a 1-1 draw at fellow play-off contenders Brighton.
The Seagulls had taken the lead through a Chris Gunter own goal but had to play the final 39 minutes with 10 men at the Amex stadium following captain Gordon Greer's dismissal for two bookings.
Drenthe's 64th minute equaliser kept Reading two points ahead of Brighton in the play-off race.
Bolton thrashed Leeds 5-1 at Elland Road to continue their revival with a third successive win.
Three goals in a 12-minute spell either side of the interval by Joe Mason, Lukas Jutkiewicz and Zat Knight provided the platform, with Mark Davies adding the fourth 18 minutes from time and substitute Andre Moritz completing the rout on 89 minutes.
Elsewhere, Yeovil boosted their hopes of avoiding relegation with a 2-0 win over Sheffield Wednesday and Bournemouth won 1-0 at Blackpool.
Doncaster beat Huddersfield 2-0 and Middlesbrough defeated Ipswich 2-0.