Brighton fought back superbly against 10-man Manchester City to earn a famous 3-2 win in front of 8,000 spectators at the Amex Stadium.
The newly crowned Premier League champions were fast out of the blocks, taking the lead after a couple of minutes through Ilkay Gundogan's close range header. But any momentum Pep Guardiola hoped his side would generate was quickly halted when Cancelo, who has been in exceptional form for most of the season, was dismissed for pulling down Danny Welbeck as the last man.
That allowed Brighton to come back into the game and have an abnormally high amount of possession against a team renowned for holding onto the ball themselves. But after failing to break through, City punished Albion again moments into the second half - Phil Foden on hand this time to score a wonderful individual goal after running from just inside his own half.
Not wanting to be outdone, the Seagulls scored a terrific goal of their own minutes later when Leandro Trossard slalomed through City's defence to rifle past Ederson. That sparked the most wonderful of turnarounds - from a home perspective, anyway - as Brighton's supporters roared their team on with vociferous support.
First, Adam Webster rose highest to plant a header past Ederson, before Dan Burn popped up to bundle home at the second attempt - his first goal for Brighton and first in three seasons. City were shellshocked and unable to get back into the game, leaving Graham Potter's side to collect a memorable three points.
Here's the ratings for both sides.
Brighton player ratings
1. Goalkeeper & Defenders
Robert Sanchez (GK) - 6/10 - Made a couple of smart saves but wasn't as stretched as he'd have expected.
Ben White (CB) - 7/10 - Wouldn't have known he was playing in central defence, always popping up on the edge of City's box and providing an attacking outlet. A player with huge potential.
Adam Webster (CB) - 8/10 - Planted a superb header past Ederson to draw City level and was relatively comfortable in defence.
Dan Burn (CB) - 8/10 - Scored the memorable winner, having marauded forwarded like White for much of the game.
2. Wing-Backs & Midfielders
Alireza Jahanbakhsh (RWB) - 6/10 - Wasn't too involved in the first half, and was unable to capitalise on the odd occasion he could look to counter. Subbed after going 2-0 down.
Yves Bissouma (CM) - 7/10 - Does everything competently and with a certain degree of class. Can see why big clubs are looking at him.
Steven Alzate (CM) - 6/10 - Not too involved going forward but kept things ticking over well enough.
Alexis Mac Allister (AM) - 6/10 - A tidy operator who is efficient on the ball and has great awareness of what's going on around him.
Pascol Groß (AM) - 7/10 - Switched to the right hand side after Welbeck went off, which isn't entirely his strong suit. Did okay considering.
Jakub Moder (LWB) - 7/10 - Impressive down the left hand side, linking up well with substitute Trossard.
Danny Welbeck (ST) - 6/10 - Looked bright in the first half hour and did enough to make Cancelo bring him down. Unfortunately, the dreaded injury curse struck again.
Leandro Trossard - 9/10 - Exceptional when he came on, full of running and always positive. Was a nightmare to deal with and scored a superb goal.
Adam Lallana - 7/10 - Made a superb last ditch tackle late on to preserve Brighton's advantage.
Andi Zeqiri - 6/10
Manchester City player ratings
5. Goalkeeper & Defenders
Ederson (GK) - 6/10 - Not really much Ederson could do with any of Brighton's goals, though he may feel that he could have batted Burn's first effort further away from goal.
Joao Cancelo (RB) - 4/10 - Perhaps unlucky to be dismissed after tangling with Welbeck, but it was his initial misjudgment that put him in trouble.
John Stones (CB) - 6/10 - Made an unusually high amount of clearances but was under the pump throughout the second half. Beaten in the air for Webster's second.
Ruben Dias (CB) - 6/10 - Tried to organise City's defence the best he could, flexing his vocal cords throughout. Beaten by a side in inspired form.
Oleksandr Zinchenko (LB) - 5/10 - Not a great outing for the Ukrainian, who found himself going one way for most of the game.
Rodri (DM) - 5/10 - Gave the ball away too many times and was overwhelmed by Brighton pouring players forwarded.
Ilkay Gundogan (CM) - 7/10 - Scored a tidy header early on and went about his business with typical style. Taken off injured in the second half, a potentially huge blow for City.
Bernardo Silva (CM) - 6/10 - A bit invisible in truth, owing to City's inability to control the ball. Works hard but tackling and tracking isn't his strongest suit.
Riyad Mahrez (RW) - 6/10 - Faded as the game went on, like many of his teammates.
Ferran Torres (ST) - N/A - Hooked for Eric Garcia after Cancelo's red card, having barely had any involvement.
Phil Foden (LW) - 7/10 - Oh yes, oh yes, oh yes. A superb individual goal that, really, deserves to win football matches and not lose them. Still, wasn't his day.
Eric Garcia - 5/10 - Overwhelmed by a superb performance from Trossard, but admittedly he is a centre-back by trade.
Fernandinho - 5/10 - Came on for the injured Gundogan but couldn't halt Brighton's momentum. Booked.