Match ends, Doncaster Rovers 1, Millwall 1.
Doncaster ended a four-match losing run and Millwall's five-game winning streak on the road with a hard-fought draw.
Millwall went ahead when Steve Morison lobbed Thorsten Stuckmann from outside the box after Paul Keegan's error.
Rovers levelled when Richard Chaplow slotted home Andy Williams' cross against his former club.
Doncaster forced the pace in the second half, but Lynden Gooch headed just wide while visiting keeper Jordan Archer denied Nathan Tyson and Conor Grant.
Millwall manager Neil Harris told BBC Radio London:
"Getting ourselves in front, we're a little disappointed that we didn't win the game.
"Looking back and having seen the results in the division it's probably a point gained.
"Excluding the goal they didn't really cause us any problems. They only really caused us a problem in the last 10 minutes when we made individual errors."
- 4McCulloughBooked at 90mins
- 2LundBooked at 55mins
- 8ChaplowBooked at 54mins
- 18KeeganSubstituted forMiddletonat 52'minutes
- 11WilliamsSubstituted forGoochat 60'minutes
- 17WebsterBooked at 56mins
- 25J WallaceSubstituted forOnyedinmaat 89'minutes
- 24ThompsonBooked at 80mins
- 18FergusonSubstituted forO'Brienat 76'minutes
- Carl Boyeson
- Shots on Target
Second Half ends, Doncaster Rovers 1, Millwall 1.
Corner, Doncaster Rovers. Conceded by Jordan Archer.
Attempt saved. Conor Grant (Doncaster Rovers) right footed shot from the centre of the box is saved in the bottom left corner.
Luke McCullough (Doncaster Rovers) is shown the yellow card for a bad foul.
Foul by Luke McCullough (Doncaster Rovers).
Lee Gregory (Millwall) wins a free kick in the defensive half.
Hand ball by Ben Thompson (Millwall).
Foul by Harry Middleton (Doncaster Rovers).
Lee Gregory (Millwall) wins a free kick in the attacking half.
Substitution, Millwall. Fred Onyedinma replaces Jed Wallace.
Attempt missed. Richard Chaplow (Doncaster Rovers) right footed shot from outside the box is too high.
Nathan Tyson (Doncaster Rovers) wins a free kick in the attacking half.
Foul by Mark Beevers (Millwall).
Attempt saved. Byron Webster (Millwall) header from the centre of the box is saved in the centre of the goal.
Corner, Millwall. Conceded by Craig Alcock.
Attempt saved. Nathan Tyson (Doncaster Rovers) right footed shot from the centre of the box is saved in the bottom right corner.
Aaron Taylor-Sinclair (Doncaster Rovers) wins a free kick in the attacking half.
Foul by Steve Morison (Millwall).
Corner, Millwall. Conceded by Aaron Taylor-Sinclair.