Brighton moved two points clear at the top of the Championship with an impressive victory over Millwall.
Both goalkeepers were forced into early saves but the visitors were soon in command and Will Buckley cut back from the right for Ashley Barnes to fire in.
Adam El-Abd made it two from close range soon after the break when a left-wing corner was not properly cleared.
Substitute Chris Taylor was dismissed for a lunge but a late Chris Wood drive for 10-man Millwall saw a tense finale.
The home side almost completed an unlikely comeback, only for former Manchester United goalkeeper Tomasz Kuszczak to thwart Wood in added time with a stunning save from a point-blank volley.
Millwall v Brighton history
Brighton's victory puts them 33-32 ahead in league matches between the two clubs dating back to 1921
He had also denied the on-loan West Brom striker as early as the fifth minute with a smart stop, while opposite number David Forde kept out Wayne Bridge's angled drive.
Brighton soon asserted themselves and took the lead in the 17th minute as Buckley beat Scott Malone and pulled the ball back from the byeline for Barnes to sidefoot home from 10 yards.
Buckley, who had earlier fired narrowly wide, almost added a second for the Seagulls after beating Forde to a long ball and steering his shot goalwards, but Shane Lowry blocked on the line.
Kuszczak was injured after Taylor stretched for a 50-50 challenge which referee Andre Marriner deemed worthy of a red card.
But the Polish keeper recovered to help his side to a fifth successive Championship win and comdemn Millwall to a third consecutive league defeat which leaves the Lions in the bottom three.
Millwall manager Kenny Jackett:
"My impression was it was a harsh decision [Chris Taylor's red card]. I asked the referee if he did catch him and he said he did, but Chris thought the ball was there to be won and any contact was none or minimal.
"I was disappointed with the goals against us, we gave ourselves a mountain to climb.
"Ultimately it was a mountain we nearly did climb with a lot of pressure and that late chance, but against a good side we can't be conceding that many goals."
Brighton manager Gus Poyet:
"It's very nice to be top. But when you start in this league you know how difficult every game is, you need to be on the bench watching that last 20 minutes, with my team defending like mad, to know how much you have to suffer to get three points.
"We are supposed to know how to play against 10 men and we didn't do it today.
"The last 20 minutes was unbelievable, the pressure they put us under. So it was a great three points."
Live Text Commentary
Inswinging corner taken by James Henry, Tomasz Kuszczak makes a save.90:00 +3:49 Full time
Full Time The referee brings the game to a close.90:00 +1:06
Corner taken right-footed by James Henry.90:00 +0:54
Chris Wood takes a shot. Save by Tomasz Kuszczak.87:36
Corner taken right-footed by Kazenga LuaLua from the left by-line, Inigo Calderon produces a header from deep inside the six-yard box that clears the crossbar.86:42
Corner taken by Kazenga LuaLua from the left by-line, save by David Forde.86:05
Liam Bridcutt has a drilled shot. Save made by David Forde.83:00 Substitution
Substitution Andrea Orlandi goes off and Kazenga LuaLua comes on.81:17
Shot by Inigo Calderon from just outside the area goes over the net.79:42
Will Buckley fouled by Liam Trotter, the ref awards a free kick. Andrea Orlandi takes the direct free kick.78:45
Assist by James Henry.78:45 Goal scored
Goal! - Chris Wood - Millwall 1 - 2 Brighton Chris Wood scores a goal from deep inside the penalty area to the bottom left corner of the goal. Millwall 1-2 Brighton.78:20
James Henry takes a outswinging corner to the near post, clearance made by Ashley Barnes.77:52
Will Buckley takes a shot. Save by David Forde.75:50 Substitution
Substitution Darius Henderson comes on in place of Andy Keogh.71:22
Gary Dicker challenges Nadjim Abdou unfairly and gives away a free kick. Alan Dunne takes the free kick.67:02 Dismissal
Dismissal Red card for Chris Taylor.64:27
Corner taken by James Henry from the right by-line played to the near post.62:47
Will Buckley fouled by Shane Lowry, the ref awards a free kick. The free kick is delivered left-footed by Will Buckley from right wing, clearance by Chris Wood.61:12
Outswinging corner taken from the right by-line by James Henry, save by Tomasz Kuszczak.
Substitution Scott Malone leaves the field to be replaced by Paul Robinson.55:50
Shot by Ashley Barnes from just outside the area goes over the net.55:26
Will Buckley has an effort at goal from just inside the box that misses to the right of the goal.54:12
Ashley Barnes takes a shot. Liam Trotter gets a block in.53:58
Inswinging corner taken left-footed by Andrea Orlandi from the right by-line.53:42
Will Buckley takes a shot. Shane Lowry gets a block in.52:41
Alan Dunne is ruled offside. Tomasz Kuszczak restarts play with the free kick.49:32
The assist for the goal came from Andrea Orlandi.49:32 Goal scored
Goal! - Adam El-Abd - Millwall 0 - 2 Brighton Adam El-Abd gets on the score sheet with a goal from close range to the bottom left corner of the goal. Millwall 0-2 Brighton.49:00
Outswinging corner taken by Andrea Orlandi,48:27
Foul by Karleigh Osborne on Ashley Barnes, free kick awarded. Liam Bridcutt takes the free kick.47:37
Inswinging corner taken right-footed by James Henry from the left by-line, Close range headed effort by Karleigh Osborne misses to the right of the target.47:25 Booking
Booking Chris Taylor goes into the book for unsporting behaviour.47:23
Foul by Dean Hammond on Chris Taylor, free kick awarded. Chris Taylor takes the direct free kick.47:10
The assistant referee signals for offside against Ashley Barnes. Free kick taken by Shane Lowry.45:01
The second half has started.45:00 +1:15 Half time
Half Time The ref blows to signal half-time.45:00 +0:01
Inswinging corner taken from the left by-line by James Henry, Adam El-Abd manages to make a clearance.45:00 Substitution
Substitution Inigo Calderon comes on in place of Bruno Saltor.45:00 Substitution
Substitution Chris Taylor comes on in place of Josh Wright.44:29
Corner taken right-footed by James Henry to the near post, Adam El-Abd makes a clearance.42:38 Substitution
Substitution Craig Mackail-Smith leaves the field to be replaced by Gary Dicker.41:11
Liam Trotter takes a shot. Save by Tomasz Kuszczak.40:11
James Henry takes a shot. Save by Tomasz Kuszczak.38:08
Andrea Orlandi takes a inswinging corner from the right by-line to the near post, clearance by Andy Keogh.37:41
Free kick awarded for an unfair challenge on Liam Bridcutt by Josh Wright. Liam Bridcutt takes the direct free kick.35:58
Alan Dunne concedes a free kick for a foul on Will Buckley. Andrea Orlandi delivers the ball from the free kick left-footed from left channel, clearance by Chris Wood.34:10
Corner taken by Andrea Orlandi from the left by-line played to the near post, Ashley Barnes takes a shot. Alan Dunne gets a block in.33:00
Corner from the right by-line taken by James Henry, clearance made by Ashley Barnes.31:10
Will Buckley takes a shot. Shane Lowry gets a block in.29:59
Shane Lowry takes a shot. Save by Tomasz Kuszczak.27:50
Corner taken by James Henry.25:36
Chris Wood produces a left-footed shot from inside the area that goes over the bar.24:32
Inswinging corner taken from the right by-line by Scott Malone, save by Tomasz Kuszczak.19:42
Foul by Adam El-Abd on James Henry, free kick awarded. The free kick is delivered left-footed by Scott Malone from right wing, Craig Mackail-Smith makes a clearance.18:06
Shot by Josh Wright went wide right of the target.16:35
Assist on the goal came from Will Buckley.16:35 Goal scored
Goal! - Ashley Barnes - Millwall 0 - 1 Brighton Ashley Barnes gets on the score sheet with a goal from deep inside the penalty box low into the middle of the goal. Millwall 0-1 Brighton.10:04
Will Buckley fouled by Scott Malone, the ref awards a free kick. Bruno Saltor takes the direct free kick.7:20
Andrea Orlandi has an effort at goal from 35 yards and went wide left of the target.6:22
Long range shot by Will Buckley goes wide right of the target.6:00
Wayne Bridge takes a shot. Save by David Forde.4:18
Outswinging corner taken left-footed by Andrea Orlandi played to the near post, clearance by Alan Dunne.3:56
Chris Wood takes a shot. Save by Tomasz Kuszczak.0:34
Josh Wright challenges Andrea Orlandi unfairly and gives away a free kick. Adam El-Abd restarts play with the free kick.0:00
The referee starts the match.
Live data and text provided by our data suppliers