Substitute Sam Saunders capitalised on a 79th-minute mistake by Bobby Reid to cut in from the left and drill a low 20-yard shot that struck a defender in the middle of the penalty area to wrong-foot goalkeeper Elliot Parish.
And the outcome was settled on 86 minute when City's defence failed to deal with a Saunders corner from the left, leaving Clayton Donaldson with a simple tap-in from inside the six-yard box.
A drab game was into stoppage time when substitute Marlon Harewood reduced the arrears from point-blank range after Jay Emmanuel-Thomas' shot from a narrow angle was deflected into his path.
It is now 21 League games without a win for City under Sean O'Driscoll, a run stretching back to March, and pressure is becoming intense on the head coach.
A first-half riddled with passing errors from both sides saw the home side dominate possession without forcing a single save from Richard Lee.