Gary McSheffrey (36) scored the Sky Blues' opener and Middlesbrough had Kevin Thomson sent off three minutes later. Alex Nimely scored a debut goal after his loan move from Manchester City (57) and Matthew Bates scored a 64th-minute own goal from David Bell's cross. Scott McDonald grabbed a consolation for Tony Mowbray's men.
West Ham United took advantage of Southampton's inactivity to move three points clear at the top with a 2-1 win at home to Nottingham Forest.
Mark Noble's penalty double (45 and 63) proved enough for the Hammers, who recorded their third straight league win and will remain top unless Saints beat Leicester City on Monday evening (Tuesday morning AEDT).
Forest scored an injury-time consolation through Lewis McGugan but remains in the bottom three.
Cardiff City remains four points behind West Ham in third after a thrilling 3-2 win at home to Portsmouth.
Kenny Miller put the Bluebirds in front from Peter Whittingham's cross (15) but fell behind to goals from Marko Futacs (39) and Greg Halford (49) as Pompey threatened just a second win in 13 away league games.
Mark Hudson levelled for Cardiff (69) and Craig Conway netted the winner in injury-time to extend its unbeaten run to five matches.
Hull City is up to fifth, behind Middlesbrough on goals scored alone, after beating Reading 1-0 at the Madejski Stadium as Robbie Brady netted the only goal in the 66th minute.
Birmingham City moved above Reading into the play-off zone with a 3-0 home win over Watford.
Curtis Davies (35 and 60) scored a headed double and Chris Burke made sure of the win with nine minutes to go to take Blues' unbeaten league run to six.
Bristol City and Millwall both moved further clear of danger with victories.
The Robins were 2-1 victors over second-bottom Doncaster Rovers as Chris Wood scored his 12th of the season (26) and Kalifa Cisse notched a second five minutes later. El-Hadji Diouf halved City's lead in the 75th minute.
Darius Henderson scored his second hat-trick of the week, and his third of the season - as Millwall won 3-1 at Barnsley, for whom Jimmy McNulty pulled one back two minutes from time.
Blackpool moved up to seventh as it scored twice in the last five minutes to beat Crystal Palace 2-1 at Bloomfield Road. Owen Garvan's 27th-minute penalty put the Eagles ahead but Elliot Grandin (85) levelled and Chris Basham scored in the last minute after Kevin Phillips' header had hit the bar.
Leeds United climbed two places to ninth with a 3-1 win at home to Ipswich Town. Adam Drury put the visitor in front (34) but after Alex McCarthy's dismissal for handball the Whites stormed back through Robert Snodgrass (74), Ross McCormack (82) - his 12th league goal of the season - and Luciano Becchio in injury-time.
Derby County's run of four straight Championship wins came to an end in a goalless draw at Burnley, while a goal in each half from Will Buckley (32 and 88) earned Brighton & Hove Albion a 2-1 win over Peterborough United, whose goal was scored by David Ball (72).