Villa were seconds away from a New Year's Day celebration at the Liberty Stadium when Danny Graham volleyed home in the fifth minute of stoppage time to deny them an unlikely victory.
Outplayed for the opening half hour, Paul Lambert's men had fallen behind to a goal from former Villa man Wayne Routledge as well as surviving two Michu efforts against the woodwork.
But Andreas Weimann equalised just before half-time with his sixth goal of the season, and visiting supporters were in raptures when Christian Benteke converted an 84th minute penalty for his ninth Villa goal.
Just when Villa looked set for three valuable points, though, they had to settle for one - and Ashley Westwood joined the club's long casualty list when he limped off 10 minutes from the end with an ankle injury.
Even before the opening goal, Swansea had gone close on a couple of occasions.
In the fourth minute Routledge raced through the middle and looked a certain scorer until the advancing Brad Guzan stuck out a leg to save.
Although the ball ran loose to Michu, the keeper got back quickly to block the follow-up effort.
Villa looked vulnerable at the back in the early stages, and when Pablo Hernandez threaded an astute pass through the middle in the ninth minute, Routledge was again in space.
This time he made no mistake, going past the unguarded Guzan before slotting home from the right-hand edge of the six-yard box.
Michu then struck a post with a low shot, while Graham fired wide from a good position and also had a header saved by Guzan.
Villa's first goal attempt came from Benteke, who cut in from the left for a low angled shot which was well held by Michel Vorm.
The keeper saved more comfortably when Weimann could only send the ball looping into the air with a miscued shot after Benteke had headed down to him.
But the Swans were soon threatening again, Michu brilliantly turning past Ciaran Clark in the 28th minute for a shot which was diverted by Guzan's arms on to the far post.
The rebound fell to Hernandez, who sent an angled drive across goal and just wide of the right-hand upright.
After Marc Albrighton had sent a snap shot wide, Weimann was booked for dissent when he kicked the ball away in frustration after having a throw-in awarded against him when he kept the ball in play.
But the Austrian striker's frustration turned to delight in the 44th minute when he grabbed an equaliser.
Benteke was the instigator, superbly controlling Enda Stevens' high ball from the back before producing a probing pass which evaded home skipper Ashley Williams.
Weimann displayed his predatory instincts as he quickly controlled the ball before drilling a low right-foot shot beyond Vorm and into the bottom corner.
Villa opened the second half in more forceful mood, although Hernandez might easily have restored Swansea's lead when he sliced wide at the far post following an inviting cross from Routledge.
The visitors were fortunate not to concede a penalty on the hour mark, Joe Bennett handling inside the penalty area as Angel Rangel tried to flick it past him.
Referee Mark Halsey, thankfully, ruled that the offence had taken place just outside the box.
In the 72nd minute Villa were close to a second when Benteke's close-range shot hit Williams and the ball fell to Weimann, who dragged his effort across the face of goal.
And in the 84th minute Villa were ahead when Benteke met Barry Bannan's left-wing corner with a header which Nathan Dyer cleared off the line.
As the ball ran loose the Swansea sub brought down Weimann - and Benteke sent Vorm the wrong way from the spot.
Just when it looked as if Villa had achieved a memorable win, though, Graham volleyed home his last-gasp leveller.
Swansea City: Vorm; Rangel, Flores, Williams, Davies;Hernandez, deGuzman (Ki 62), Britton (Agustien 79) Routledge (Dyer 66);Graham, Michu. Unused subs: Tremmel, Monk, Shechter, Tiendalli.
Villa: Guzan; Lowton, Herd, Clark, Stevens (Holman 68); Albrighton (Bowery 85), Westwood (Bannan 81), Delph, Bennett;Weimann, Benteke. Unused subs: Given, Ireland, Lichaj, Carruthers.