Danny Graham scored a stoppage-time equaliser to deny Aston Villa victory at the Liberty Stadium.
Christian Benteke appeared to have given Villa victory with an 85th-minute penalty after Nathan Dyer had fouled Andreas Weimann.
But Graham fired home from eight yards to clinch a point for the hosts.
Wayne Routledge's early strike had given Swansea the lead while Michu twice hit the post, before Weimann equalised before just half-time.
Swansea should have won - Laudrup
The thrilling finale had seemed unlikely in the opening stages when Swansea, with top scorer Michu returning as one of five changes, cut Villa to shreds.
But Villa, after conceding 15 goals in their previous three games, showed a fighting spirit which had been lacking over Christmas.
Manager Paul Lambert's policy of giving youth a chance saw him select the youngest Villa team ever to take the field in the Premier League with an average age of just 23 years and 119 days.
Swansea dominated the first half but went in at half-time all square after missing a host of good chances.
Villa's holiday nightmare
Sun 23 Dec: Chelsea 8-0 Aston Villa
Wed 26 Dec: Aston Villa 0-4 Tottenham
Sat 29 Dec: Aston Villa 0-3 Wigan
Tue, Jan 1: Swansea City 2-2 Aston Villa
Routledge fired the Swans ahead in the ninth minute with his second opening of the match, after good work by Leon Britton and Pablo Hernandez.
Within a minute Michu hit the post and then Graham fired a left-foot shot wide when he should have scored.
Michu produced a sublime drag-back inside the box to leave the Villa defence flat-footed, but goalkeeper Brad Guzan got enough on the shot to guide it onto the post.
Then Swansea were caught against the run of play just before the interval.
Benteke controlled well in midfield and his pass wrong-footed Ashley Williams to find Weimann, who fired a first-time shot low past Michel Vorm's outstretched right hand.
It was Villa's first goal since their 3-1 win at Liverpool on 17 December.
Lambert delighted with second half
Villa had a let-off early in the second half when referee Mark Halsey ruled Joe Bennett handled the ball outside the box, though it was a close call.
But Villa were showing a lot more fight than in recent weeks, with Marc Albrighton making a nuisance of himself and Bennett looking lively down the left flank.
And Benteke and Weimann caused panic as Chico Flores failed to clear, but Weimann's shot was well wide.
Dyer cleared a powerful Benteke header off the line, but the little winger brought down Weimann as he attempted to retrieve the ball and conceded the penalty.
Benteke stepped up and sent Vorm the wrong way.
The Swans threw everything at Villa in a bad-tempered finale, and finally got their reward when the ball fell to Graham eight yards out and he needed two attempts to beat Guzan with a powerful right-foot shot.
Swansea manager Michael Laudrup:
"We could have been 4-0 up after 12 minutes. Incredible.
"Aston Villa really fought after three defeats. They wanted to do everything to get a point and got close to getting three points. It was a great fight back from us, we showed character. We could have lost but should have won.
"Obviously it should have been two penalties. The Aston Villa player had two feet on the line and last time I read the rules on the line is in the box. His hand is also in the box so it should have been a penalty but that's life."
Aston Villa manager Paul Lambert:
"It is hard to take because at 30 seconds to go, you expect to see it through. In the first half, Swansea were right on top but in the second half we were very good.
"We have a lot of injuries so you have to give credit to the players. It is a big point for us.
"I've got a lot of faith in what we're doing and we won't deviate from it. Even after the heavy defeats we were keeping spirits up."
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.