High-flying Bluebirds edge it at Portman Road
Town matched promotion chasing Cardiff all the way but went down to a second-half Kenneth Zohore goal.
The Dutchman apperared to handle the ball before stabbing it past Bart Bialkowski midway through the half after Blues had shaded the play in the opening 45 minutes.
Bersant Celina and Martyn Waghorn both threatened an equaliser for Blues but Neil Warnock’s side held on to maintain their push for a return to the Premier League.
Town made five changes to the side that drew at Norwich, with David McGoldrick and Joe Garner both missing out through injury.
Matthew Connolly had a gilt edged chance to open the scoring inside the first minute when a corner dropped to him 15 yards out but he pulled his shot wide.
Celina led a break for Blues but couldn’t find Freddie Sears with his pass, then Luke Chambers cancelled out the threat of Zohore as he raced into the box.
Marko Grujic fired over for the Bluebirds, Town responded with a clever pass from Jordan Spence that found Sears but his shot hit the sidenetting.
Spence released Grant Ward down the right, his cross cleared as Town began to get in the game, Loic Damour off radar with a right foot effort from 25 yards for the visitors.
Celina and Spence linked up down the right to set up Ward, whose cross was cleared as Town continued to go head to head with the promotion contenders, Jonas Knudsen created space on the left but Sol Bamba cleared the danger.
Neil Etheridge pushed Ward’s drive behind for a corner as Town stepped up the threat on the Cardiff goal, the ‘keeper having a far easier time to deal with Luke Hyam’s partly blocked shot.
Sears cut inside and saw his shot deflected behind for a corner as Town looked the more likely to break the deadlock, Celina winning another corner after drifting into the box, Spence having a header cleared from the flag-kick.
Greg Halford replaced Sean Morrison in a forced change for the visitors five minutes before the break, Celina skipping past Etheridge from a Cole Skuse pass but running out of pitch as Town edged the first-half.
Gary Madine replaced Grujic at the break, Chambers heading over from a corner as a second-half action began.
The excellent Skuse won a free-kick on the edge of the box as Town continued to press, Celina hitting the wall with his delivery then Ward powering his way into the Cardiff box but his cross cannoned away to safety.
Bart Bialkowski punched clear from a Joe Ralls free-kick under pressure from Madine, Zohore firing wide from the edge of the box as the Bluebirds began to exert some pressure on the Town goal.
Cardiff got the breakthrough on 66 minutes, Ralls’ free-kick was headed on by Madine and Zohore foiund the net from close range after failing to make contact with his initial effort and then appearing to handle the ball.
Callum Connolly replaced Hyam for the final 20 minutes, the midfielder in the action straightaway, linking up with Celina to set up Ward who was wide with a left footer.
Celina tested Etheridge after weaving past two defenders, Skuse’s volley deflected away, then Connolly forcing Ward’s cross behind.
Waghorn replaced Spence in Town’s second change, Zohore dragging his shot wide from distance with better options on as Cardiff looked for a second.
Kevin Bru replaced Ward for the final exchanges, Celina finding Knudsen with a clever ball into the Cardiff box, Waghorn’s follow up effort blocked in a game of pinball.
Cardiff held on though to pick up three points that keeps them in the automatic promotion places.
Town: Bialkowski, Spence (Waghorn 78), Chambers, Webster, Carter-Vickers, Knudsen, Ward (Bru 85), Skuse, Hyam (Connolly 73), Celina, Sears. Subs not used: Crowe, Kenlock, Gleeson, Iorfa.
Cardiff: Etheridge, Morrison (Halford 40), Manga, Ralls, Zohore (Bryson 86), Bamba, Connolly, Mendez-Laing, Damour, Grujic (Madine 46), Hoilett. Subs not used: Murphy, Feeney, Pilkington, Wildschut. Booked: Bryson.