The Swans saw two points dropped as a Glenn Murray penalty and a red card to Chico Flores earned Crystal Palace a share of the spoils at the Liberty.
Garry Monk's side had looked to be heading for all three points after Jonathan de Guzman put them ahead after 25 minutes.
But the big moment of the match came in the 80th minute as sub Murray beat Michel Vorm to a long clearance, and when the striker went down under Chico's challenge - which the home crowd felt took place outside the box - the Spaniard was dismissed.
Murray himself stepped up to slot home the equaliser to set up a tense finish.
And the Eagles pushed hard for a winner, with Murray going close among a series of close calls for the visitors.
But the Swans had to settle for a point in a game which they looked on course to win.
The draw meant the Swans moved onto 29 points from 28 games, with Monk's side in 14th place following the weekend's matches.
The Swans made three changes to the starting XI.
From the side that lost 3-1 at Napoli in the Europa League, Angel Rangel returned at right-back while Leon Britton recovered from the knee problem which ruled him out of the tie in Naples.
Nathan Dyer, who scored in the 2-0 win over Palace at Selhurst Park last September, was the final change as he was given the nod on the wing.
SWANS:Michel Vorm, Angel Rangel, Chico Flores, Ashley Williams (capt, Jordi Amat, 70), Ben Davies, Leon Britton, Jonathan de Guzman, Pablo Hernandez (Jose Canas, 22), Nathan Dyer, Wayne Routledge, Wilfried Bony (Leroy Lita, 63).
SUBS: Gerhard Tremmel, Neil Taylor, Marvin Emnes, Alvaro Vazquez.
CRYSTAL PALACE: Julian Speroni, Joel Ward, Scott Dann, Damien Delaney, Jonathan Parr (Jerome Thomas, 70), Tom Ince (Glenn Murray, ht), Mile Jedinak (capt), Kagisho Dikgacoi, Joe Ledley, Yannick Bolasie, Marouane Chamakh (Cameron Jerome, 32).
SUBS: Wayne Hennessey, Danny Gabbidon, Barry Bannan, Dwight Gayle.
Heavy rain ensured the surface was slick at the Liberty, and both sides were cautious in the early stages.
Neither team created much in the opening 20 minutes as Crystal Palace sat back and looked to break on the counter, with Pablo Hernandez's 20-yard strike - which flew off target - the only effort of note.
The Swans were forced into an early change as Jose Canas replaced Hernandez, who appeared to have picked up an injury.
But with 25 minutes on the clock, the Swans got themselves ahead.
Wilfried Bony fed Leon Britton, and when his pass found Jonathan de Guzman in the box, the Dutchman raced in on goal before beating Julian Speroni from close range.
Palace were forced into a change of their own as they lost Marouane Chamakh through injury, with Cameron Jerome taking his place.
The Swans, and de Guzman, went close to getting a second as Canas' superbly-judged cross found the Dutchman in the box, but Speroni raced out and cleared the danger.
Garry Monk's side continued their search for another goal and Bony was denied by a fantastic reflex save after the Ivorian stretched out to volley Rangel's first-time cross following a neat Wayne Routledge pass.
The Swans again probed via de Guzman, who looked to latch onto Bony's superb through ball, which cut through the Palace defence.
But again Speroni came to Palace's rescue as the Argentinian keeper won the race and cleared the ball from danger.
That was the end of the action in the first half, with the Swans looking comfortable as they went into the break 1-0 up.
HALF-TIME: Swans 1 Crystal Palace 0
Palace boss Tony Pulis made a change at half-time, with striker Glenn Murray replacing winger Tom Ince.
It was the Swans, though, who made the first real attacking threat of the half as Bony saw his shot blocked after his initial pressure on Kagisho Dikgacoi led to his chance from a Routledge cross.
The Swans made their second substitution just past the hour as Leroy Lita came on in place of Bony as the former England Under-21 international was given the task of leading the line.
And a final change was made soon after as Jordi Amat replaced skipper Ashley Williams, while Palace also made their third substitution as winger Jerome Thomas replaced left-back Jonathan Parr.
Palace were offering far more of an attacking threat, and sub Murray got onto the end of fellow replacement Jerome's knockdown, but Murray's shot on the turn was easily collected by Michel Vorm.
The visitors pushed again, and when Jerome met a cross from Jerome Thomas, Vorm again had to be well positioned to gather.
Then, with ten minutes to go, Palace were given a lifeline.
Yannick Bolasie's long clearance saw Vorm beaten to the ball by Murray and when Chico Flores brought him down, referee Mike Dean pointed to the spot before showing the Spaniard a red card although the home crowd felt the foul was committed outside the box.
Murray stepped up and calmly fired his effort into the top corner.
Palace, buoyed by their goal, almost snatched the lead as Murray made a menace of himself inside the box and shot on the box took a deflection before bouncing wide.
But that was the end of the action, however, with the Swans having to settle for a point.