Match ends, Doncaster Rovers 1, Bolton Wanderers 2.
Bolton stretched their unbeaten away run in the Championship to six matches as they won at relegation-threatened Doncaster Rovers.
Neil Danns fired home the opener from the edge of the box to give Bolton a deserved early lead.
Joe Mason doubled the lead from a tight angle on 15 minutes.
David Cotterill's 30-yard free-kick pulled a goal back three minutes later but, despite heavy second-half pressure, Bolton held on.
Bolton have lost only one of their past 11 games, winning six of them, to move clear of the relegation zone and into mid-table safety.
The defeat though, a third in four matches, leaves Doncaster just four points clear of the drop zone.
Bolton began at a blistering pace and looked set for a comprehensive victory after securing a two-goal lead inside the opening quarter of an hour.
A low right-wing cross from Alan Hutton was stepped over by a couple of players and Danns charged in to fire home a superb shot from the edge of the box.
Lee Chung-Yong then headed down a free-kick and Mason shot into the net from a tight angle, before Cotterill brilliantly curled in a 30-yard free kick for the hosts.
The home side dominated the second half and had a penalty appeal rejected by referee Gary Sutton when James Husband appeared to be brought down by Mohamed Kamara in the 60th minute.
But despite their best efforts, Doncaster could not find a way to beat Bolton goalkeeper Adam Bogdan for a second time.
Doncaster manager Paul Dickov:
"Why the penalty wasn't given, I haven't a clue. I've seen it back on video and it only confirms what I thought at the time - it was a stonewall penalty.
"That's a defining moment in the game but these decisions just seem to be going against us."
Bolton manager Dougie Freedman:
"It was an excellent three points and I thought we deserved it with the way we imposed ourselves on the game at the start.
"You have to give credit to them for the way they came back at us and we had to make one or two changes to combat that."
- 27NeillSubstituted forTamasat 66'minutes
- 3HusbandBooked at 82mins
- 19WellensSubstituted forFurmanat 35'minutes
- 21De Val Fernandez
- 18DannsBooked at 81mins
- 26MasonSubstituted forTrotterat 68'minutes
- 27LeeSubstituted forBeckfordat 89'minutes
- Gary Sutton
- Shots on Target
Second Half ends, Doncaster Rovers 1, Bolton Wanderers 2.
Foul by Sam Johnstone (Doncaster Rovers).
Jermaine Beckford (Bolton Wanderers) wins a free kick in the defensive half.
Corner, Doncaster Rovers. Conceded by Lukas Jutkiewicz.
James Coppinger (Doncaster Rovers) wins a free kick in the attacking half.
Foul by Medo (Bolton Wanderers).
Attempt missed. Neil Danns (Bolton Wanderers) right footed shot from the centre of the box is high and wide to the right. Assisted by Lukas Jutkiewicz.
Attempt missed. Jermaine Beckford (Bolton Wanderers) right footed shot from the right side of the box is close, but misses to the left. Assisted by Neil Danns following a fast break.
Attempt missed. David Cotterill (Doncaster Rovers) header from the centre of the box misses to the left. Assisted by James Coppinger.
Substitution, Bolton Wanderers. Jermaine Beckford replaces Lee Chung-Yong.
Attempt missed. Chris Brown (Doncaster Rovers) header from the left side of the six yard box misses to the left. Assisted by Gabriel Tamas with a cross.
Offside, Doncaster Rovers. Chris Brown tries a through ball, but Billy Sharp is caught offside.
Corner, Doncaster Rovers. Conceded by Jay Spearing.
Corner, Bolton Wanderers. Conceded by Sam Johnstone.
Attempt saved. David Wheater (Bolton Wanderers) header from the right side of the box is saved in the bottom left corner. Assisted by Tim Ream with a cross.
James Husband (Doncaster Rovers) is shown the yellow card for a bad foul.
Foul by James Husband (Doncaster Rovers).
Liam Trotter (Bolton Wanderers) wins a free kick on the left wing.
Neil Danns (Bolton Wanderers) is shown the yellow card for a bad foul.