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.
Did you know?
The only previous FA Cup meeting between Bolton and Swansea was in the 1926 semi-final, when Bolton won 3-0 at White Hart Lane. They went on to beat Manchester City in the final at Wembley
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."
Live Text Commentary
Full Time The match has reached full-time.90:00 +4:03
Inswinging corner taken by Joe Allen.90:00 +2:47 Substitution
Substitution Tuncay Sanli comes on in place of Chris Eagles.90:00 +1:35 Booking
Booking Booking for Mark Davies for unsporting behaviour.90:00 +0:07
Nathan Dyer fouled by Joe Riley, the ref awards a free kick. Luke Moore fires a strike on goal direct from the free kick, save made by Gerhard Tremmel.90:00 +0:07 Booking
Booking The referee shows Joe Riley a yellow card.88:48
Short corner taken by Martin Petrov from the right by-line.88:48 Booking
Booking Caution for Martin Petrov.88:11
Free kick awarded for a foul by Ashley Williams on Kevin Davies. Martin Petrov restarts play with the free kick.86:59
David Wheater takes a shot. Save made by Gerhard Tremmel.85:42
Luke Moore produces a header from deep inside the area and hits the post. Outswinging corner taken from the right by-line by Chris Eagles.84:21
Corner taken right-footed by Joe Allen, Header on goal by Garry Monk from inside the box goes harmlessly over the target.82:20
Outswinging corner taken by Chris Eagles from the right by-line.81:35
Free kick awarded for an unfair challenge on Luke Moore by David Wheater. Free kick taken by Ashley Williams.80:16
Effort from the edge of the box by Fabrice Muamba goes wide of the right-hand upright.78:39 Substitution
Substitution Fabrice Muamba comes on in place of Darren Pratley.78:39 Substitution
Substitution Joe Allen on for Mark Gower.77:32
Nigel Reo-Coker takes a shot. Gerhard Tremmel makes a save. Corner taken right-footed by Chris Eagles, save by Gerhard Tremmel.75:48
Inswinging corner taken by Mark Gower, Ashley Williams has a header from close in and clears the crossbar.74:27
Darren Pratley challenges Garry Monk unfairly and gives away a free kick. Gerhard Tremmel restarts play with the free kick.
Substitution David Ngog leaves the field to be replaced by Kevin Davies.73:02
The referee blows for offside against David Ngog. Ashley Williams restarts play with the free kick.70:45
Joe Riley sends in a cross, blocked by Garry Monk. Outswinging corner taken right-footed by Chris Eagles from the right by-line. Joe Riley has an effort at goal from outside the area missing to the wide right of the target.69:28
Garry Monk produces a right-footed shot from deep inside the penalty area which goes wide of the right-hand post.66:02
The free kick is delivered right-footed by Mark Gower from right wing, David Wheater manages to make a clearance.66:02 Booking
Booking The referee cautions David Wheater for unsporting behaviour.65:33
Samuel Ricketts concedes a free kick for a foul on Nathan Dyer. Ashley Richards takes the direct free kick. Free kick awarded for an unfair challenge on Luke Moore by David Wheater.63:47 Substitution
Substitution Nathan Dyer joins the action as a substitute, replacing Wayne Routledge.63:47 Substitution
Substitution Leroy Lita leaves the field to be replaced by Danny Graham.63:47
Luke Moore is flagged offside by the assistant referee. Free kick taken by Adam Bogdan.63:13
Martin Petrov produces a cross.62:05
Effort from inside the area by Darren Pratley misses to the right of the goal.60:18
Darren Pratley takes a shot. Corner taken left-footed by Martin Petrov from the left by-line to the near post, clearance by Wayne Routledge.59:33
Martin Petrov has an effort at goal from the edge of the area that misses to the right of the target.58:21
Kemy Agustien has an effort from just inside the box that misses to the left of the goal.57:41
Leroy Lita has an effort at goal from deep inside the box striking the post.55:58
Assist by Martin Petrov.55:58 Goal scored
Goal! - Chris Eagles - Bolton 2 - 1 Swansea Chris Eagles fires in a goal from close in to the bottom right corner of the goal. Bolton 2-1 Swansea.55:17
Martin Petrov takes a shot. Save by Gerhard Tremmel.53:06
Darren Pratley produces a cross.51:35
Long range shot by Luke Moore goes wide right of the target.50:34
Darren Pratley concedes a free kick for a foul on Mark Gower. Mark Gower restarts play with the free kick.47:23
Wayne Routledge produces a cross, Samuel Ricketts gets a block in.45:21
Wayne Routledge takes a shot. Darren Pratley gets a block in.45:01
The second half kicks off.45:00 +3:18 Half time
Half Time The half-time whistle blows.45:00 +1:10
Martin Petrov provided the assist for the goal.45:00 +1:10 Goal scored
Goal! - Darren Pratley - Bolton 1 - 1 Swansea Darren Pratley scores a headed goal from close in. Bolton 1-1 Swansea.45:00 +0:44
Leroy Lita challenges Darren Pratley unfairly and gives away a free kick. Martin Petrov produces a cross,43:50
Foul by Luke Moore on Joe Riley, free kick awarded. Direct free kick taken by Joe Riley.42:33
Assist by Leroy Lita.42:33 Goal scored
Goal! - Luke Moore - Bolton 0 - 1 Swansea Luke Moore grabs a goal from inside the box to the bottom left corner of the goal. Bolton 0-1 Swansea.40:10
The offside flag is raised against Luke Moore. Indirect free kick taken by Adam Bogdan.38:17
David Wheater takes a shot. Save by Gerhard Tremmel.37:10
Corner taken by Martin Petrov, Garry Monk makes a clearance.35:10
The assistant referee signals for offside against Wayne Routledge. Adam Bogdan takes the indirect free kick.30:28
Mark Gower produces a right-footed shot from just outside the box that goes wide right of the target. Corner taken by Martin Petrov from the left by-line played to the near post, Ashley Williams manages to make a clearance.28:52
Foul by Luke Moore on Dedryck Boyata, free kick awarded. Adam Bogdan takes the direct free kick.28:18
Martin Petrov takes a shot. Gerhard Tremmel makes a save.25:56
Corner taken by Chris Eagles from the left by-line. Mark Davies takes a shot. Gerhard Tremmel makes a save. The ball is swung over by Chris Eagles. Effort from the edge of the area by Chris Eagles goes wide of the right-hand upright.25:16
Shot by David Ngog from 25 yards. Gerhard Tremmel makes a save.24:08
A cross is delivered by David Wheater, clearance made by Ashley Williams. Corner taken by Martin Petrov from the right by-line, clearance made by Leroy Lita. Inswinging corner taken left-footed by Martin Petrov, save by Gerhard Tremmel.23:05
Outswinging corner taken left-footed by Chris Eagles, Samuel Ricketts concedes a free kick for a foul on Ashley Williams. Free kick taken by Garry Monk.22:41
Free kick awarded for an unfair challenge on Darren Pratley by Mark Gower. Free kick taken by Nigel Reo-Coker.20:12
Outswinging corner taken left-footed by Martin Petrov from the left by-line, Samuel Ricketts takes a shot.18:26
David Ngog takes a shot. Save by Gerhard Tremmel. Inswinging corner taken right-footed by Chris Eagles, clearance made by Josh McEachran.14:26
Unfair challenge on Luke Moore by Joe Riley results in a free kick. Free kick crossed right-footed by Mark Gower, clearance made by Joe Riley. Mark Gower takes a inswinging corner from the left by-line played to the near post.10:56
Leroy Lita is flagged offside by the assistant referee. Adam Bogdan takes the free kick.9:34
Chris Eagles takes a shot. Blocked by Ashley Williams. Inswinging corner taken by Martin Petrov from the right by-line played to the near post, Josh McEachran manages to make a clearance.8:29
Corner taken by Martin Petrov from the right by-line.5:04
Garry Monk concedes a free kick for a foul on David Ngog. Chris Eagles takes the free kick, Darren Pratley takes a shot. Save made by Gerhard Tremmel. Corner taken left-footed by Martin Petrov to the near post, clearance made by Ashley Williams. Chris Eagles produces a right-footed shot from the edge of the box and misses to the right of the target. Free kick awarded for an unfair challenge on Leroy Lita by David Wheater. Josh McEachran takes the free kick.0:00
The match has kicked off.
Live data and text provided by our data suppliers