Rangers 0 Celtic 2
It was O'Dea's glancing header in the second minute of extra time which gave Celtic all the impetus and they should have added to their lead before Kirk Broadfoot touched McGeady from behind.
The Rangers defender was red-carded for his tackle before McGeady sent Allan McGregor the wrong way with his spot-kick.
In the first half McGeady's pace troubled Steven Whittaker and from the winger's cross Scott McDonald glanced his header over. Celtic went even closer with a powerful shot from Scott Brown which skimmed the bar.
Rangers came more into the match just before the interval, but Steven Davis shot high over from Sasa Papac's clever lay-off. Kyle Lafferty cleverly chested down a long ball from Broadfoot before volleying a right-foot shot which Artur Boruc did well to tip over.
Rangers went on the attack at the start of the second half and Davis' shot from Kenny Miller's pass went just wide.
Celtic nearly conceded a crazy goal when Glenn Loovens was short with his back-pass to Boruc who had to hack the ball clear with Lafferty inches away from intercepting.
From Paul Hartley's free-kick, Lee McCulloch did well to scramble the ball clear and then McGregor parried Brown's shot at the expense of a corner.
Towards the end of normal time all the pressure was coming from Celtic and, from Hartley's corner, Loovens' header was cleared off the line by Pedro Mendes.
Rangers sent on Nacho Novo for the ineffective Miller and the substitute raised Rangers' hopes with a powerful shot which Boruc tipped over.
Celtic were totally dominant in extra time after O'Dea's opener when the defender glanced Shunsuke Nakamura's free-kick over McGregor into the net.
Rangers hardly threatened the Celtic goal and Georgios Samaras should have added to their lead before McGeady's last-minute spot-kick sealed the cup for Celtic.