With only one win in six, question marks have been raised over the future of coach Paulo Fonseca after Fernando Alexandre scored Academica's winner and Danilo missed a penalty.
The champions, who had last lost a league game in January 2012, have now gone three Primeira Liga matches without a win after succumbing to an Academica side which had won only three times in the top flight going into the game, and had not beaten Porto at home in 43 years.
Fernando Alexandre was the hosts' hero, registering his second goal of the season on the stroke of halftime to set his side on the way to a major shock - although it had to survive a second-half penalty scare.
The midfielder stole in at the far post and kept his cool to angle an effort into the roof of the net from close range after a delivery from the right was not cleared by the Porto defence.
Porto piled on the pressure in the second half but wasted a golden opportunity to restore parity when Ricardo saved a late Danilo penalty after Jackson Martinez went down in the area.
Paulo Fonseca's men threw everything at Academica, sending goalkeeper Helton forward for a series of corners in the dying stages, but it was to no avail as the hosts made it three wins from their last four league matches.
Porto has now won only one of its last six games in all competitions ahead of the league clash with Sporting Braga on Saturday, with question marks over the future of Fonseca beginning to be raised following their meek Champions League draw with Austria Vienna in midweek.
Both Benfica and Sporting Lisbon have the chance to leapfrog the champions at the top of the Primeira Liga table on Sunday when they tackle Rio Ave and Pacos Ferreira, respectively.