Celtic's 77-game unbeaten home record was brought to an end by a late goal from Dons striker David Zdrilic.
Bryan Prunty drew Aberdeen level early in the 56th minute
Henrik Larsson shot the home side in front early in the game with his 36th goal of the season.
But former Celt Bryan Prunty levelled the game soon after the interval, knocking in a Scott Muirhead cross.
Celtic pressed strongly for a winning goal but the Dons were a threat on the break and Zdrilic smashed home a fine strike in the 90th minute.
The Dons had not beaten Celtic in Glasgow for 11 years but managed to cause a huge upset with a side that included five teenagers.
A surprise result did not look likely in the early stages when the visitors looked unsure at the back and were losing the ball cheaply in midfield.
And the home side punished some Dons hesitancy after 16 minutes when Mohammed Sylla flicked the ball on for Larsson to run on and drill the ball home from 15 yards.
Ten minutes later, Aberdeen midfielder Paul Sheerin warmed the hands of Celtic keeper David Marshall with a stinging strike from distance as the visitors began to assert themselves more.
Prunty, on as an early substitute for the injured Steve Tosh, had a chance to draw Aberdeen level but made a mess of his volley from a promising position.
Five minutes before the interval, Larsson broke away from the Dons defence again but Preece was out swiftly to make a good diving save at the striker's feet.
Soon after, the Dons keeper had to race off his line again - this time to thwart the on-rushing Sylla.
David Zdrilic celebrates his late winner
Aberdeen made a bright start to the second half and drew level after 56 minutes when Zdrilic sent Muirhead scampering down the left flank and Prunty was quickest to react to the drilled cross.
Larsson went close to re-establishing Celtic's lead when his header from a Jamie Smith cross went inches wide of the target.
Celtic were enjoying the bulk of possession but Aberdeen were working hard to close them down and, with the pace of Muirhead, looked dangerous on the break.
A fumble from Preece gave his team a fright but Sheerin was on hand to clear the danger, with several Celtic players waiting to pounce on the keeper's error.
Celtic substitute Liam Miller crashed in a shot from an unconvincing Preece punch but Craig Higgins was on the goal-line to block.
The home side, who had not lost a league game this season, threw everything at the Dons in the closing stages but the youthful visitors defended stoutly.
Muirhead had a chance to score for Aberdeen late in the game but couldn't keep his shot down after good work from Richard Foster.
But the visitors snatched a famous victory in the 90th minute when Zdrilic ran from deep to crash home a crisp strike.
Celtic: Marshall, McNamara (Balde 49), Varga, McManus (Miller 67), Agathe (Smith 45), Lennon, Lambert, Petrov, Wallace, Larsson, Sylla.
Subs Not Used: McGovern, Beattie.
Aberdeen: Preece, Higgins, Rutkiewicz, Muirhead, Morrison, Tosh (Prunty 23), Heikkinen, Sheerin, Buckley, Zdrilic, Foster.
Subs Not Used: Esson, Souter, Stewart, Donald.
Referee: I Brines