Manchester City 1 Wigan Athletic 0
With a replay looking likely, Cole finally broke the deadlock in the 83rd minute with his ninth goal of the season.
It was a hard earned victory in what was a dour cup tie which only sparked to life in the final 20 minutes.
Wigan, who made six changes from midweek when they won through to the final of the Carling Cup at Arsenal, gave a spirited display with their weakened side.
And until Cole's late intervention it looked as though they had done enough to take City back to the JJB stadium for a replay.
The opening half was desperately poor as neither keeper had a save to make and on the few occasions City threatened they were invariably caught offside or let down by a wayward final pass.
Stephen Ireland fired narrowly over in the sixth minute, but that was as close as City came to a goal, though a number of crosses flew across the face of goal with no player able to get on the end of them.
Wigan, in fairness, defended well and their backline was rarely troubled though without Jason Roberts up front they lacked a cutting edge.
The first incident of note in the match came early in the second half when goalkeeper John Filan was penalised by referee Howard for picking up a backpass from Paul Scharner.
City had a great chance as the free kick was only 12 yards from goal and Trevor Sinclair rolled the ball to Richard Dunne, whose fierce drive was cleared by striker Neil Mellor, one of 11 Wigan players stationed on the goal-line.
That opening lifted City and moments later Filan had to stretch to catch a header from City defender Sylvain Distin following a corner from Ireland.
And just short of the hour, Wigan brought on Roberts for Mellor while at the same time City took off Darius Vassell and replaced him with Bradley Wright-Phillips.
In an 11-minute spell City also brought on Kiki Musampa for Albert Riera, a straight swap on the left wing and Wigan introduced Stephane Henchoz and Jimmy Bullard as Josip Skoko and Alan Mahon were taken off.
Wigan were desperately unlucky not to snatch the lead in the 73rd minute with their first clear cut chance of the match.
Roberts was brilliantly denied by a block from City keeper David James and the ball ran free to Damien Francis, whose shot hit the crossbar.
City then went straight to the opposite end and Filan produced a fine reflex save to turn Wright-Phillips' close-range header from a Trevor Sinclair cross over the crossbar.
City played their final card with eight minutes remaining when Antoine Sibierski came on for Ireland as City adopted a more attacking approach.
Moments later City finally made their breakthrough when Wright-Phillips' throughball released Cole who beat the offside trap and slotted the ball low past Filan.
Wigan had a great chance to equalise in stoppage time when Bulllard released Scharner who raced clear, but pulled his shot wide across the face of goal when he ought to have hit the target.