Bolton 2-1 Swansea
Chris Eagles pounced on Gerhard Tremmel's mistake as Bolton came from behind to beat Swansea and book a place in the FA Cup fifth round.
Eagles was the first to react after Tremmel failed to hold on to Martin Petrov's strike on 56 minutes.
Luke Moore had put Swansea ahead against the run of play with a deft chip two minutes before half-time.
Former Swan Darren Pratley equalised in first-half injury time, heading home Petrov's free-kick.
The hosts, and Eagles in particular, made the brighter start, with the former Burnley man firing wide before seeing another shot blocked by Ashley Williams.
David Ngog beat the Swansea offside trap but failed to beat goalkeeper Tremmel, and later failed to connect with a volley.
The home side continued to press, with Mark Davies forcing a low save from Tremmel, who then denied Petrov.
Swansea, showing 10 changes to the side that lost at Sunderland, offered very little in response.
But they thought they had taken the lead after 40 minutes when Wayne Routledge netted from six yards, but the assistant referee flagged for offside.
Within three minutes Swansea were in front when Moore outmuscled David Wheater and clipped the ball over Bolton goalkeeper Adam Bogdan.
The lead lasted barely three minutes, as Pratley equalised in the final moments of the first half.
Pratley, who left the Liberty Stadium last summer, headed home from close range and, in a show of respect to his former team, celebrated in subdued fashion.
Moore went close to restoring Swansea's lead early in the second half when his long-range effort flew past the post.
But Bolton went ahead in the 56th minute, with Eagles the first to react after Tremmel's error.
Swansea's response was immediate as Leroy Lita hit the woodwork, while Pratley's header struck the crossbar at the other end and Nigel Reo-Coker found the side-netting with another Bolton effort.
Swansea rallied in the final 10 minutes, captain Garry Monk going close before substitute Danny Graham headed against a post.
Bolton manager Owen Coyle: "We made three changes and Darren [Pratley] was one of them, and it was great to see the energy that he brought to the team.
"I think Darren [Pratley] has probably been a bit frustrated at times this year. It was great to see him hit the back of the net today and he could have had a hat-trick.
"When he scored his goal he was very respectful of his former club and the fans with his reaction. It was certainly a great answer from the lad and he showed his class with the celebration."
Swansea boss Brendan Rodgers: "There is no blame attached to him [Gerhard Tremmel].
"I feel I have the number one goalkeeper in the league in Michel Vorm and Gerhard offers a wonderful support to him.
"He doesn't get a lot of game time and he is a good guy. There is certainly no blame attached, but we could have prevented their move for the second goal."