. . . all the action from the Liberty Stadium
Danny Graham struck late in added-on time to ensure the Swans the share of the spoils with Aston Villa on New Year's Day.
The Swans had been staring defeat in the face as they trailed 2-1 when five minutes of added-on time had been signalled.
But Graham hammered home a loose ball in the 94th minute for his second goal in as many games to break Villa's hearts.
The Swans had started the first half by bombarding the visitors, and when Wayne Routledge opened the scoring against his former club after nine minutes it was one-way traffic.
Michu twice struck the post while Graham fired just wide, but Villa stunned the Liberty just before the break as Andreas Weimann fired past Michel Vorm in a rare attack from the visitors.
The second half didn't see as many chances, but after Christian Benteke had seen his header cleared off the line by Nathan Dyer in the 85th minute, referee Mark Halsey was pointing to the spot after Dyer tripped Weimann while chasing the loose.
Benteke stepped up and sent Vorm the wrong way as Villa were closing in on three points.
But Graham broke their hearts when he beat Brad Guzan in a crowded box to claim a draw which sent the Swans onto 29 points after 21 games.
Michael Laudrup made five changes to the starting XI that brought home three points from Fulham.
Michel Vorm was back in goal while Ben Davies and Chico Flores returned to defence. In midfield, Leon Britton was recalled while Michu returned from an ankle injury to support lone striker Danny Graham.
Swans: Michel Vorm, Angel Rangel, Chico Flores, Ashley Williams (capt), Ben Davies, Leon Britton (Kemy Agustien, 79), Jonathan de Guzman (Ki Sung-Yueng, 62), Michu, Pablo Hernandez, Wayne Routledge (Nathan Dyer, 66), Danny Graham.
Subs: Gerhard Tremmel, Dwight Tiendalli, Garry Monk, Itay Shechter.
Aston Villa: Brad Guzan, Ciaran Clark (capt), Marc Albrighton (Jordan Bowery, 85), Ashley Westwood (Barry Bannan, 81), Fabian Delph, Christian Benteke, Andreas Weimann, Joe Bennett, Enda Stevens (Brett Holman, 68), Chris Herd, Matthew Lowton.
Subs: Shay Given, Stephen Ireland, Eric Lichaj, Samir Carruthers.
The Swans carved open the first chance of the game after four minutes, and it was a great opportunity too.
Michu headed on a loose ball to Wayne Routledge, who latched onto his own knock on after outpacing Ciaran Clark to go in one-on-one with Brad Guzan. But the winger couldn't find a way past Guzan, with the keeper rushing out to deny Routledge from opening the scoring.
Another chance came just two minutes later, Pablo Hernandez threading through a sublime pass that cut open the Villa defence, but when Michu looked to send Danny Graham in rather than opting for goal himself, Chris Herd stuck out a leg to block the pass.
It was a signal of intent from the Swans, and they got their goal in the ninth minute. Another superb pass from Hernandez caught the Villa backline flatfooted, and Routledge raced on again and this time took full advantage as he rounded Guzan before firing in from an acute angle.
The barrage of attacks didn't stop there as the Jack Army was on its feet two minutes later. This time it was Michu who provided the ammunition as he raced in on goal, but though his shot beat Guzan it bounced back out off the post.
Villa were under heavy pressure, and Graham directed a low cross just wide from 12 yards as the home side maintained their high tempo.
The chances kept coming, Michu's trickery beating the defence before his shot was deflected onto the far post by the onrushing Guzan, with Hernandez drilling the loose wide.
The visitors rarely threatened, but they stunned the Liberty by levelling two minutes before the break.
Christian Benteke sent a pass through for Andreas Weimann, who fired low through the legs of Ashley Williams and past Michel Vorm.
Half-time: Swans 1 Aston Villa 1
The Swans again showed their intent from the start, and Graham screwed an effort along the face of goal after Hernandez slipped through a pass into the box.
Michu then headed straight at Guzan from a Rangel cross before the Swans had a penalty appeal turned down by referee Mark Halsey after he adjudged Joe Bennett to have handled Rangel's cross outside of the box.
Michael Laudrup then made some changes just after the hour as Ki Sung-Yueng replaced de Guzman and Nathan Dyer came on for scorer Routledge.
But despite enjoying the majority of possession and territory, the Swans were finding it hard to break down Villa, who were defending deep and in numbers.
Weimann went close to snatching a shock lead for the visitors as he scuffed an effort along the face of goal before Laudrup made his final change with Kemy Agustien replacing Leon Britton for the final 11 minutes.
But Villa did get their shock lead with five minutes to go as Dyer was adjudged to have tripped Weimann, just seconds after having kept Benteke's header off the line.
Benteke, who scored against the Swans at Villa Park, sent Vorm the wrong way to put Villa 2-1 up.
It looked like heartbreak for the Swans, but more drama followed.
Deep into the five minutes of added on time, the Swans pushed and pushed, and after Dyer's cross dropped to Graham, the striker hammered home his second goal in as many games.
The Swans had one more chance to claim all three points, with Agustien firing over from 25 yards.
But that was the final act as both teams shared the spoils.