Glenn Murray scored from the spot after Chico gave away a penalty in the closing stages, cancelling out Jonathan de Guzman's first-half opener.
Swansea were totally dominant in the first half, and deservedly took the lead through De Guzman in the 25th minute.
Palace's Tom Ince - a January transfer target for the hosts - had questioned Swansea's ability to deal with the Londoners' attacking threat in the build-up to the match, but it was his half-time replacement Murray who sparked an upturn in the visitors' performance.
And the former Brighton and Hove Albion striker netted the leveller from the spot in the 83rd minute after being brought down by Chico Flores, who was subsequently given his marching orders.
Flores' initial contact with Murray appeared to occur outside the box, but referee Mike Dean pointed to the spot and the forward picked himself up to place the penalty into the top-right corner.
The result lifts Palace three points clear of the relegation zone, while Swansea slipped a place to 15th.
Swansea returned to a more familiar starting XI than the one that featured in their UEFA Europa League exit in Napoli on Thursday, and dominated possession in the opening stages as Palace struggled to get out of their own half.
Despite having almost exclusive possession of the ball, Garry Monk's side were not creating any meaningful goalscoring opportunities, with two De Guzman free-kicks both floating harmlessly out for goal kicks.
And it was Palace who eventually had the first attempt on target in the 20th minute, as Marouane Chamakh nodded a limp header into the arms of a grateful Michel Vorm.
Pablo Hernandez drilled wide of the right-hand post at the other end shortly after, but was subsequently replaced by Jose Canas after being forced off with an injury.
A wonderful passing move then led to the opener in the 25th minute. Ashley Williams - holding a high defensive line as Palace sat deep - played the ball forward to Wilfried Bony, whose flick into the path of Nathan Dyer allowed the winger to tee up De Guzman to slot beyond Palace goalkeeper Julian Speroni.
Palace's limited attacking threat was dealt a blow five minutes later when Chamakh's game was ended by an apparent hamstring injury, and Speroni had to be on high alert 10 minutes before the break to deny Bony from close range.
The visitors looked livelier after Murray's introduction for the second half, conceding nowhere near the amount of possession they had in the opening 45 minutes, but still struggled to really test Vorm in the Swansea goal.
But the game turned on its head 10 minutes from time, as Flores brought down Murray after Vorm had recklessly rushed off his line.
The players came together just outside the area, but Dean awarded the penalty and Murray duly hammered home his first Premier League goal.