Pablo Counago won the game for Town with a sublime finish with the last kick of a dramatic match after Coventry had levelled a minute earlier.
The Spaniard kept his cool to flick the ball past Keiren Westwood to ensure mass celebrations from Blues including 'keeper Arran Lee-Barrett who raced the length of the pitch to join in.
Stern John thumped home a header from Liam Rosenior's cross just before the break to cancel out Clinton Morrison's opener on two minutes and Jack Colback put Blues ahead with a close range strike early in the second-half after a neat flick by Grant Leadbitter.
Richard Wood silenced the Town fans with what looked like an equaliser deep into added on time until Counago struck.
Roy Keane made three changes to the team that drew at Leicester last week, with John lining up against his former club, Owen Garvan and Rosenior also returning to the side.
Town have scored in the first five minutes in four of the last five games but it was Coventry who were quick out of the blocks at a very wet Portman Road, Morrison following on from his brace in the 2-1 win over the Blues at the start of the season with a superb left foot finish from 18 yards.
Damien Delaney lacked power with a right foot finish from eight yards, Colback and Grant Leadbitter both denied in a goalmouth scramble as Town pressed for an immediate response.
Richard Wood cleared as Jaime Peters looked to get beyond the visitors' defence, 'keeper City Keiren Westwood beating Jon Walters to a loose ball in the six yard box, with David Norris then diverting Rosenior's cross a yard wide.
Morrison gave Arran Lee-Barrett an anxious moment as he fired just wide, the Republic of Ireland international then having another effort smothered by Gareth McAuley's challenge.
Rosenior was a constant problem to Coventry's defence with his willingness to get forward and his cross escaped Walters at the nearpost.
David Bell volleyed spectacularly at Lee-Barrett from 30 yards before Town levelled three minutes before the break, John beating his marker to head in from Rosenior's cross after Norris had released the full-back down the right.
Rosenior was immediately in the action after the re-start, his cross taken well by Westwood low down at his nearpost.
Silky skills from Leadbitter set up Garvan for a shot from 20 yards straight at Westwood as Town threatened a second and the Blue Army didn't have to wait long, Colback converting from close range on 52 minutes after another subtle touch from Leadbitter.
Walters and James McPake were booked after a clash that brought a minor scuffle between a number of players, Morrison in the middle of the melee.
Lee-Barrett tipped over Gary Deegan's 25 yard strike superbly, Town clearing the danger after Wood had won the header at the far post.
Town made a double change on 65 minutes with Counago and Connor Wickham linking up front, Norris and John making way.
Lee-Barrett saved well again from Morrison, Coventry making their first change with Leon Best on for Eastwood, Deegan then making way for Carl Baker.
Counago was denied by McPake's challenge inside the box, Wickham then lashing his shot over the bar from the edge of the box as Blues looked to seal the points.
Morrison was booked for a challenge on Rosenior as the game entered the last 10 minutes, Coventry making a third change with Aron Gunnarsson on for Stephen Wright.
Wickham had a shot beaten out by Westwood, Counago then denied on the goalline after dancing around three players including the 'keeper but seeing his shot blocked by the heel of Martin Cranie inches from goal.
Lee Martin replaced Garvan in added on time, Michael McIndoe booked before Wood levelled the scores with a far post header only for Counago to send Portman Road into ecstasy seconds later with a chip over Westwood from Wickham's excellent pass as Town made it one defeat in 15.
Town: Lee-Barrett, Rosenior, McAuley, Delaney, Peters, Garvan (Martin 90), Leadbitter, Norris (Wickham 64), Colback, John (Counago 64), Walters. Subs not used: McLoughlin, D.Wright, Balkestein, Edwards. Booked: Walters, Rosenior.
Coventry: Westwood, Wright (Gunnarsson 82), McPake, Wood, Cranie, Bell, Clingan, Deegan (Baker 70), McIndoe, Morrison, Eastwood (Best 68). Subs not used: Konstantopoulos, Hall, Madine, Barnett. Booked: McPake, Morrison, McIndoe.
Att: 20,135













