City lost at home for the first time in the league this season as they were stunned by Palace, with manager Roy Hodgson handing his former club Liverpool an early Christmas present.
But Schlupp equalised six minutes later and two minutes after that, Townsend hammered in a sensational volley from more than 25 yards out.
The hosts, looking for a second successive win, were unable to find a way past a Fulham side who remain bottom of the standings but have stopped shipping goals at the rate they did before coach Claudio Ranieri succeeded Slavisa Jokanovic.
City have lost just once in the league this season (to Chelsea) and now sit four points behind league leaders Liverpool following the Reds 2-0 win over Wolves on Friday night.
"Andros Townsend's goal was magnificent, a wonderful strike on goal", said Hodgson. We can not concede this kind of penalty.
There was to be one final big chance for City to at least salvage a point, only for Gabriel Jesus to head over the bar from a glorious position once picked out by De Bruyne, meaning a second defeat in three league matches for the home side.More news: Korea warns United States sanctions may 'block path to denuclearisation'
More news: Michael Flynn associate charged with illegal lobbying for Turkey
More news: US Troop Withdrawal Will Help Further Afghan Peace: Qureshi
But, on 51 minutes, Jaime Vardy fired past Kepa Arrizabalaga and into the corner as Sarri's men conceded for the first time at home since November 4.
The Reds have made a fine start to the new campaign and have established themselves as one of the main contenders for the title this season.
Eden Hazard struck the crossbar in the first half and team-mate Marcus Alonso hit the post late on as Chelsea lost at home to Leicester for the first time in 18 years.
City had not lost any of their previous 52 league games against teams outside the traditional "big six", a run dating back almost two years to a defeat at Everton in January 2017.
- Since his Premier League debut, Milivojevic has scored 13 penalties - five more than any other player in that time.
Watford are sixth after a 2-0 win at West Ham, Troy Deeney and Gerard Deulofeu scoring the goals, while David Brooks scored two excellent goals as Bournemouth beat Brighton 2-0.
There had been little sign of such drama as City took their customary stranglehold on the game, enjoying 78 percent of the possession in the first half.