James Coppinger kept Doncaster's play-off hopes alive but ended local rivals Barnsley's chances in a rousing South Yorkshire derby at Oakwell.
The midfielder curled home from the edge of the area to condemn Barnsley to a third successive league defeat.
The Tykes were unlucky to finish on the losing side after Anderson de Silva's header hit the bar in the first half.
And Hugo Colace was denied by a superb diving Neil Sullivan stop late on as Rovers held on for the victory.
Barnsley manager Mark Robins told BBC Radio Sheffield: "Disappointing, it's a poor defeat. We created one or two decent chances and really, we should have had a draw today.
"One or two think the job's done and that's not good enough for me or the supporters.
"We have to make sure we are better mentally than that and stronger than that for the rest of the season."
Doncaster manager Sean O'Driscoll: "We played brighter in the first half.
"We've played well in the last two games (before today) and only came out with one point; the players didn't want to end the month with a poor performance.
"Billy Sharp will be frustrated with his miss (in the second half). Since we've all been growing beards he hasn't scored a goal."
90:00+4:37 The game is over, as the referee blows his whistle.
90:00+3:12 Outswinging corner taken from the right by-line by Hugo Colace, clearance by James O'Connor.
90:00+2:20 Corner from left by-line taken by Martin Woods.
90:00+1:45 Neil Sullivan takes the direct free kick.
90:00+1:45 Booking Ryan Shotton receives a yellow card.
Correction - 90:00+1:35 Free kick awarded for an unfair challenge on James Hayter by Ryan Shotton.
90:00+1:35 awarded for a foul by Ryan Shotton on James Hayter.
90:00+0:41 Substitution Martin Woods joins the action as a substitute, replacing Jay Emmanuel-Thomas.
87:59 Luke Potter sends in a cross, Hugo Colace has a headed effort at goal from just inside the penalty area that misses to the
right of the goal.
85:55 Substitution Adam Lockwood replaces Billy Sharp.
85:55 The assistant referee signals for offside against Daniel Bogdanovic. Direct free kick taken by Neil Sullivan.
84:48 Daniel Bogdanovic takes a shot from just inside the penalty box which clears the crossbar.
83:27 Adam Hammill takes a shot. Blocked by Shelton Martis.
81:23 Hugo Colace takes a shot. Save by Neil Sullivan.
80:49 James Coppinger has a headed effort at goal from deep inside the area missing to the right of the target.
78:50 John Oster decides to take a short corner.
77:59 James O'Connor concedes a free kick for a foul on Daniel Bogdanovic. Free kick taken by Luke Steele.
76:26 Free kick awarded for an unfair challenge on Luke Potter by Jay Emmanuel-Thomas. Free kick crossed by Luke Potter, clearance
by Mark Wilson.
75:18 Outswinging corner taken by Adam Hammill, save by Neil Sullivan.
74:36 James Coppinger fouled by Luke Potter, the ref awards a free kick. Neil Sullivan restarts play with the free kick.
72:16 Substitution Emil Hallfredsson comes on in place of Anderson De Silva.
72:16 Andy Gray is caught offside. Neil Sullivan restarts play with the free kick.
71:38 Adam Hammill takes a shot. Save by Neil Sullivan.
Correction - 71:13 Anderson De Silva takes a shot. Save made by Neil Sullivan.
71:13 Anderson De Silva takes a shot. Save made by Luke Steele.
70:04 Booking John Oster booked.
69:57 Booking The referee cautions Hugo Colace for unsporting behaviour.
69:27 Foul by Hugo Colace on John Oster, free kick awarded. Free kick taken by James O'Connor.
65:59 The referee blows for offside. Luke Steele restarts play with the free kick.
64:59 Outswinging corner taken right-footed by Adam Hammill from the right by-line, Jay Emmanuel-Thomas makes a clearance.
63:25 Daniel Bogdanovic is flagged offside by the assistant referee. Free kick taken by Neil Sullivan.
62:32 James Coppinger takes a shot. Luke Steele makes a save.
60:10 Outswinging corner taken from the right by-line by John Oster.
58:56 Adam Hammill crosses the ball, Neil Sullivan makes a save.
57:11 Billy Sharp concedes a free kick for a foul on Darren Moore. Luke Steele restarts play with the free kick.
55:45 The official flags Daniel Bogdanovic offside. Free kick taken by Neil Sullivan.
54:50 Luke Potter crosses the ball, Neil Sullivan makes a save.
53:42 Substitution (Barnsley) makes a substitution, with Jacob Butterfield coming on for Nathan Doyle.
52:21 Ryan Shotton delivers the ball, James O'Connor manages to make a clearance.
50:35 The offside flag is raised against Billy Sharp. Direct free kick taken by Luke Steele.
50:05 Adam Hammill takes a shot. Save by Neil Sullivan.
49:25 Shot from long range by Jay Emmanuel-Thomas goes wide of the left-hand post.
48:40 Effort from the edge of the penalty area by Anderson De Silva goes wide of the left-hand post.
48:14 The official flags Billy Sharp offside. Luke Steele takes the direct free kick.
47:27 Billy Sharp produces a right-footed shot from the edge of the box and misses to the right of the goal.
45:01 The second half has started.
Half Time
45:00+2:04 The whistle is blown to end the first half.
44:14 Corner taken by Adam Hammill from the left by-line, Anderson De Silva takes a shot.
44:06 Luke Potter delivers the ball, clearance made by Shelton Martis.
41:21 Foul by Jay Emmanuel-Thomas on Stephen Foster, free kick awarded. Stephen Foster takes the direct free kick.
40:06 Free kick awarded for an unfair challenge on James Coppinger by Nathan Doyle. Neil Sullivan restarts play with the free kick.
38:55 Free kick awarded for a foul by Andy Gray on James O'Connor. Neil Sullivan takes the direct free kick.
35:45 Shelton Martis challenges Andy Gray unfairly and gives away a free kick. Adam Hammill shoots direct from the free kick, save
by Neil Sullivan.
34:18 GOAL - James Coppinger:Barnsley 0 - 1 Doncaster James Coppinger finds the back of the net with a goal from the edge of the penalty box to the bottom right corner of the goal.
Barnsley 0-1 Doncaster.
34:03 Short corner worked by Gareth Roberts.
32:54 Andy Gray concedes a free kick for a foul on Shelton Martis. Shelton Martis takes the direct free kick.
32:01 The offside flag is raised against Anderson De Silva. Neil Sullivan takes the free kick.
30:37 Direct free kick taken by Luke Steele. Effort on goal by Daniel Bogdanovic from just inside the penalty area goes over the
target.
30:37 Booking Billy Sharp goes into the referee's book.
30:21 Unfair challenge on Stephen Foster by Billy Sharp results in a free kick.
29:28 Foul by Billy Sharp on Darren Moore, free kick awarded. Luke Steele restarts play with the free kick.
28:12 Substitution Daniel Bogdanovic joins the action as a substitute, replacing Filipe Teixeira.
27:44 Adam Hammill takes a shot. Save made by Neil Sullivan.
26:26 John Oster produces a cross, clearance by Ryan Shotton.
24:42 The official flags Andy Gray offside. Free kick taken by Neil Sullivan.
24:00 Adam Hammill has an effort at goal from the edge of the area that misses to the right of the target.
20:27 Shelton Martis concedes a free kick for a foul on Anderson De Silva. Nathan Doyle crosses the ball in from the free kick.
Andy Gray is ruled offside. Neil Sullivan takes the free kick.
17:35 Adam Hammill takes a outswinging corner to the near post, clearance by John Oster.
17:15 James Coppinger delivers the ball, Stephen Foster manages to make a clearance.
16:20 Free kick awarded for a foul by Jay Emmanuel-Thomas on Darren Moore. Luke Steele takes the free kick.
15:17 Free kick awarded for an unfair challenge on Gareth Roberts by Adam Hammill. Neil Sullivan restarts play with the free kick.
14:35 Filipe Teixeira takes the chance to get an effort at goal. Save made by Neil Sullivan.
9:58 Stephen Foster has a headed effort at goal from deep inside the area missing to the left of the target.
7:54 Jay Emmanuel-Thomas is caught offside. Direct free kick taken by Stephen Foster.
7:08 The offside flag is raised against John Oster. Indirect free kick taken by Luke Steele.
6:53 Nathan Doyle gives away a free kick for an unfair challenge on James Coppinger. John Oster takes the direct free kick.
5:54 James Coppinger decides to take a short corner.
5:13 Inswinging corner taken right-footed by John Oster from the left by-line to the near post, Stephen Foster manages to make
a clearance.
3:15 Corner taken right-footed by James Coppinger from the right by-line, Effort on goal by Mark Wilson from just inside the box
goes harmlessly over the target.
0:31 The ball is sent over by Adam Hammill, save made by Neil Sullivan.
0:00 The referee gets the game underway.
Live text and data provided by The Press Association.
Bookmark with:
What are these?