Jermaine Easter's first-half strike against his former club Millwall secured a south London derby victory for Crystal Palace to keep them in touch with the play-off places.
Wilfried Zaha started a slick move before Darren Ambrose supplied Easter, who prodded in from close range.
Millwall wasted an excellent chance to equalise when Dany N'Guessan missed a header from two yards out.
Palace's Jonathan Parr cleared a Paul Robinson header off the line late on.
The win provided revenge for the Eagles, who had sacked their manager George Burley after a 3-0 defeat by the Lions on New Year's Day last season, a result which left them deep in relegation trouble.
They took the lead after 23 minutes of scrappy football, Zaha and Chris Martin combining to play in Ambrose, whose first-time cross was met by Easter.
The visitors could have made it two on the half-hour when Ambrose's corner fell to Mile Jedinak at the far post but his shot was tipped over by Steve Mildenhall.
N'Guessan then saw his close-range header from Hamer Bouazza's cross bounce high and wide, but Mildenhall in the Millwall goal was the busier keeper as half-time approached, keeping out Ambrose's free-kick and denying Zaha.
After the break, Trotter headed just over from Bouazza's corner and the midfielder also saw a shot from the edge of the area clear the crossbar.
The Lions thought they had equalised with 15 minutes to go through their skipper Robinson but Parr's clearance ensured Palace took the points.
Sorry, we were unable to load match stats, please try again.
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +3:51
Free kick awarded for a foul by Liam Trotter on Glenn Murray. Lewis Price takes the direct free kick.85:27
Mile Jedinak gives away a free kick for an unfair challenge on Liam Trotter. Free kick taken by Liam Trotter.84:00 Substitution
Substitution Chris Martin goes off and Peter Ramage comes on.84:00
James Henry delivers the ball from the free kick right-footed from right wing.84:00 Booking
Booking Chris Martin goes into the book.83:46
Free kick awarded for a foul by Sean Scannell on James Henry.80:17
Chris Martin concedes a free kick for a foul on Liam Trotter. Direct free kick taken by Shane Lowry.79:00
Outswinging corner taken from the right by-line by James Henry, clearance by Glenn Murray.77:46 Substitution
Substitution Jermaine Easter leaves the field to be replaced by Glenn Murray.76:13
John Marquis fouled by Kagisho Dikgacoi, the ref awards a free kick. James Henry takes the free kick.75:00
The offside flag is raised against Liam Feeney. Lewis Price takes the indirect free kick.72:27 Substitution
Substitution Sean Scannell is brought on as a substitute for Wilfried Zaha.71:16
Outswinging corner taken by James Henry from the right by-line, Paul Robinson takes a shot. Clearance by Jonathan Parr.70:35
Unfair challenge on James Henry by Mile Jedinak results in a free kick. James Henry takes the direct free kick.70:06
The ball is crossed by Tony Craig.69:45
Outswinging corner taken right-footed by James Henry from the right by-line, Patrick McCarthy makes a clearance.68:15
John Marquis takes a long range shot harmlessly clearing the crossbar.67:06
Lewis Price takes the free kick.67:06 Booking
Booking James Henry is shown a yellow card for unsporting behaviour.
James Henry challenges Jonathan Parr unfairly and gives away a free kick.65:45 Substitution
Substitution James Henry replaces Hamer Bouazza.64:23
Effort from outside the penalty area by Darren Ambrose goes wide left of the target.63:29
Kagisho Dikgacoi fouled by Liam Feeney, the ref awards a free kick. Direct free kick taken by Anthony Gardner.60:48
Darren Ambrose takes a shot. Save by Steve Mildenhall.60:12
Chris Martin challenges John Marquis unfairly and gives away a free kick. Free kick taken by Nadjim Abdou.57:54
Mile Jedinak takes the free kick.57:54 Booking
Booking Jack Smith is shown a yellow card for unsporting behaviour.57:47
Darren Ambrose fouled by Jack Smith, the ref awards a free kick.56:58
Foul by Patrick McCarthy on Jay Simpson, free kick awarded. Hamer Bouazza takes the direct free kick.56:13
Hamer Bouazza has an effort at goal from deep inside the area missing to the left of the target.52:52
Liam Trotter has an effort at goal from outside the box which goes wide left of the goal.46:41
Unfair challenge on Jermaine Easter by Nadjim Abdou results in a free kick. Jermaine Easter takes the free kick.45:17
Hamer Bouazza takes the outswinging corner, Header by Liam Trotter from deep inside the penalty area misses to the left of the target.45:01
The referee blows his whistle to start the second half.45:01 Substitution
Substitution (Millwall) makes a substitution, with Jay Simpson coming on for Dany N'Guessan.45:00 +1:07 Half time
Half Time The match has reached half-time.43:50
Wilfried Zaha takes a shot. Save by Steve Mildenhall.41:36
Free kick awarded for an unfair challenge on Nathaniel Clyne by Liam Trotter. Mile Jedinak restarts play with the free kick.37:57
Jack Smith challenges Jermaine Easter unfairly and gives away a free kick. Darren Ambrose shoots direct from the free kick, save by Steve Mildenhall.35:25
Free kick awarded for an unfair challenge on Dany N'Guessan by Kagisho Dikgacoi. Hamer Bouazza produces a shot on goal direct from the free kick, save by Lewis Price.35:09
Liam Trotter takes a shot. Save by Lewis Price.34:31
Corner taken by Darren Ambrose, clearance made by Dany N'Guessan.33:44
Free kick awarded for an unfair challenge on Jermaine Easter by Shane Lowry. Mile Jedinak takes the free kick.33:23
John Marquis fouled by Kagisho Dikgacoi, the ref awards a free kick. Nadjim Abdou takes the free kick.32:30
The ball is crossed by Hamer Bouazza, Dany N'Guessan produces a header from close range which goes wide of the left-hand post.30:56
Patrick McCarthy is flagged offside by the assistant referee. Indirect free kick taken by Steve Mildenhall.30:22
Chris Martin takes a shot. Save by Steve Mildenhall. Outswinging corner taken by Darren Ambrose from the right by-line, John Marquis manages to make a clearance.29:41
Free kick awarded for a foul by Tony Craig on Wilfried Zaha. Darren Ambrose crosses the ball in from the free kick.25:14
Foul by Chris Martin on Shane Lowry, free kick awarded. Direct free kick taken by Steve Mildenhall.24:48
Wilfried Zaha is ruled offside. Steve Mildenhall takes the free kick.22:46
The assist for the goal came from Darren Ambrose.22:46 Goal scored
Goal! - Jermaine Easter - Millwall 0 - 1 C Palace Jermaine Easter fires in a goal from close range to the bottom left corner of the goal. Millwall 0-1 Crystal Palace.20:55
John Marquis challenges Kagisho Dikgacoi unfairly and gives away a free kick. Direct free kick taken by Patrick McCarthy.19:41
Chris Martin fouled by Shane Lowry, the ref awards a free kick. Patrick McCarthy takes the direct free kick.17:43
Shane Lowry challenges Jermaine Easter unfairly and gives away a free kick. Patrick McCarthy takes the direct free kick.16:21
Effort from long distance by Chris Martin goes wide right of the goal.7:19
Jermaine Easter is ruled offside. Steve Mildenhall takes the free kick.4:45
Jonathan Parr fouled by Dany N'Guessan, the ref awards a free kick. Lewis Price restarts play with the free kick.3:50
Hamer Bouazza concedes a free kick for a foul on Wilfried Zaha. Free kick taken by Patrick McCarthy.1:33
Jermaine Easter concedes a free kick for a foul on Paul Robinson. Jack Smith takes the direct free kick.1:03
Jermaine Easter is caught offside. Steve Mildenhall takes the free kick.0:00
The referee starts the match.
Live data and text provided by our data suppliers