Two Marlon King penalties helped Coventry move closer to Championship safety at Fratton Park.
King converted his first of the night after Ricardo Rocha had fouled Gary McSheffrey in the box.
Portsmouth's David Nugent had a goal ruled out for offside, before McSheffrey doubled the lead after the break with a header.
King scored his second from the spot after a handball by Hayden Mullins, who was sent off for the incident.
The victory over their mid-table opponents leaves the Sky Blues five places above the drop zone - 12 points ahead of third-from-bottom Scunthorpe.
The visitors had began nervously when a Dave Kitson header from a Greg Halford free-kick forced Keiren Westwood into a fine save, while, moments later, Danny Webber blazed over from the edge of the area.
However, despite their early promise, Steve Cotterill's side found themselves trailling in the 19th minute when Rocha was adjudged to have impeded McSheffrey and King made no mistake with the penalty.
King almost turned provider when his drilled cross narrowly eluded McSheffrey and Lukas Jutkiewicz.
An angled Webber strike forced another impressive stop from Westwood.
Nugent thought he had equalised when he turned in a Mullins cross via a Webber deflection, however referee Dean Whitestone ruled that the former was in an offside position.
Ritchie De Laet should have done better after dispossessing Cranie, however, his cross to Kitson proved awkward for the former Reading man to control and the chance went abegging.
After the break, Ashdown palmed away a Jutkiewicz long-range effort, and from the resulting corner Aron Gunnarsson hit the bar with his powerful header.
In the 58th minute, McSheffrey made Coventry's aerial threat tell when he nodded in Keogh's centre.
Pompey were almost handed a lifeline when a panicking Cranie smacked a clearance against his own bar.
But the result was was put beyond doubt when Mullins was red-carded for handling Jutkiewicz's goal-bound shot and King slammed home the penalty to take his season's tally to 10.
And Pompey's miserable night was complete when Kitson had a late header kept out by his team-mate Halford.