Coverage from this desk
Brighton 0-3 Manchester United: United Imperious at the Amex on Final Day
United were imperious at the Amex in their most complete performance of the season — dominant in shape, ruthless in transition, and clinical in front of goal. Brighton still secured European football through results elsewhere, but this was a statement from Michael Carrick's side about what third place in the Premier League actually looks like.
Burnley 1-1 Wolves: Flemming Equaliser Can't Save Wolves From Relegation
Both clubs were already relegated, but the financial stakes — worth roughly £2.6m in merit payments — were real. Wolves looked set to avoid the indignity of finishing bottom until Flemming's equaliser confirmed them in 20th place, leaving Burnley on 22 points and Wolves on 20 at the close of a final day that mattered more than the table suggested.
Crystal Palace 1-2 Arsenal: Champions Crowned at Selhurst Park
Arsenal were crowned Premier League champions at Selhurst Park, and the scoreline barely captured their dominance. Four points clear of City after 38 games, ending a 21-year wait for the title, Arteta's side pressed and controlled Palace from the first whistle — this was the coronation, not the contest.
Fulham 2-0 Newcastle: Complete Control as Visitors Never Threatened
Fulham controlled every phase of a match Newcastle barely showed up for. Both clubs ended the season level on 49 points, but the gulf in intent and execution at Craven Cottage was significant — Fulham's two goals were routine, and Jiménez's farewell-season performance bookended a campaign of consistent, underappreciated quality.
Liverpool 1-1 Brentford: Kelleher Heroics Frustrate on Farewell Day
Liverpool dominated, Brentford's on-loan goalkeeper frustrated them, and a farewell day at Anfield ended without the win it deserved. Sitting fifth with Champions League qualification still mathematically open, Liverpool created enough to win comfortably but were denied repeatedly — the draw leaving their European fate dependent on results elsewhere.
Bournemouth 1-1 Manchester City: Haaland's Late Strike Denies Cherries Famous Win
The story of this match was written in its final seconds, but the real story was the 94 minutes that preceded them. Bournemouth were the more threatening side throughout and deserved to win — until Haaland arrived at the far post to deny them a famous victory and keep City's faint title hopes mathematically alive.
Chelsea 2-1 Tottenham: Visitors Dominated but Blues Held On
Chelsea held on to win a match Tottenham largely controlled but could not finish. The xG told the same story — Spurs created more, Chelsea converted better — and a narrow result shaped both clubs' final-day scenarios, with Tottenham's failure to close out a game they dominated proving costly.
Arsenal 1-0 Burnley: Havertz Header Sets Up Title Coronation
The margin was slim but the control was not. Arsenal suffocated Burnley across 90 minutes, restricting them to a single effort from Hannibal that barely troubled David Raya. Havertz's set-piece header was enough to send Arsenal five points clear of Manchester City at the summit with one game remaining.
Brentford 2-2 Crystal Palace: Ouattara Brace Rescues Bees' European Hopes
Crystal Palace arrived at the Gtech in rotation mode, one eye on a European final in Leipzig, and still nearly nicked it. Brentford's equaliser came in the sixth minute of added time via a penalty won after Caoimhin Kelleher slid into Brentford's striker — a moment of good fortune that rescued a point and denied Palace a result they had largely merited.
Everton 1-3 Sunderland: Second-Half Blitz Ends Everton's European Dream
The xG says this was roughly even — 1.32 to 1.28 — but the scoreline tells a brutally different story, and on this occasion the scoreline is right. Sunderland carried their lead into the second half through Merlin Röhl's precise game management, ending Everton's slim European hopes with a second-half blitz that was as clinical as it was unexpected.
Leeds 1-0 Brighton: Calvert-Lewin's 95th-Minute Goal Ends Brighton's European Dream
Call it what it is: a smash-and-grab. Brighton generated 2.23 xG to Leeds' 0.75, dominated set-piece danger with 0.9 xG from dead balls, and saw chance after chance go begging. Farke's side had one shot on target and somehow converted it — Calvert-Lewin's 95th-minute header ending Brighton's European dream.
Manchester United 3-2 Nottingham Forest: A Rout Wearing a Tight Game's Disguise
United won 3-2 but hit the post, missed a hatful and let Forest off again and again. Twenty-nine shots to eleven, Mbeumo a level above anyone in a Forest shirt: a comfortable win disguised as a scare.
Newcastle 3-1 West Ham: Osula Brace Makes It Comfortable as Visitors Rarely Threatened
Newcastle were ruthless in the opening quarter-hour, scoring twice before West Ham had time to organise. Woltemade opened the scoring with a clinical finish and Osula doubled the lead four minutes later — and West Ham, relegated the previous week, never found the quality or the motivation to respond.
Wolverhampton 1-1 Fulham: A Fair Point but a Fatal One for Relegated Wolves
Mirror formations, mirror xG (1.50 vs 1.48), mirror xPoints — this was as equitable as football gets on the spreadsheet. Wolves, already condemned to the Championship, took a point from their final home game that meant little in the table but demonstrated the resilience Vitor Pereira had built through an otherwise miserable season.
Chelsea 0-1 Manchester City: a backheel, a goodbye, and an eighth FA Cup
City won a final they controlled without ever dominating — and that distinction is the whole story. Ninety minutes in which Chelsea were organised, disciplined and statistically level were settled by the single thing a defensive plan cannot legislate for: one player attempting the unreasonable. The verdict isn't that City were better; it's that this is the kind of win the numbers never see coming.
Aston Villa 4-2 Liverpool: Watkins Exploits Set-Piece Weakness to Book UCL Spot
This was a deserved, emphatic win — the xG (2.94 vs 1.56), big chances (5 vs 2), and xPoints (2.3 vs 0.53) all tell the same story. Villa were the better side and punished Liverpool in exactly the channels where their high defensive line has been most exposed all season.
Manchester City 3-0 Crystal Palace: Foden Orchestrates Comfortable Win
A thrashing dressed up as a rotation exercise. Guardiola made six changes with the FA Cup final in mind but City were barely troubled by a Palace side sitting in a deep 5-4-1, and the three goals were comfortable, clinical, and never in doubt from the moment the first one went in.
PSG vs Arsenal, UCL Final: the question is which side gets asked the question that doesn't suit them
A side whose strength is not conceding meets a side whose strength is transitioning when the opponent commits. Arsenal arrive in Budapest with 0.53 xG conceded across the semi-final 2nd leg — the lowest by any team in the entire knockout phase. PSG arrive on a 6-5 aggregate win over Bayern that doubled as a defensive declaration. Whichever side is forced into the wrong question — Arsenal asked to chase, PSG asked to defend a lead — loses.
Tottenham 1-1 Leeds: Calvert-Lewin Penalty Cancels Out Tel's Opener
A tactical-chess draw that the xPoints table (Leeds 1.68, Spurs 1.07) says was slightly kinder to Tottenham than it should have been. Open-play xG ran 1.02 to 0.53 in Spurs' favour, but Farke's 3-5-2 generated the best chance of the match and the penalty that Leeds converted to level.
Burnley 2-2 Aston Villa: Fair Draw That Dealt a Blow to Villa's European Hopes
Burnley, already relegated, had no right to take anything from this — and yet xG (1.72 vs 1.75) says the draw was entirely just. Mike Jackson's side sat deep, pressed with purpose, and carved out Turf Moor's first home point against a top-six side all season.
Crystal Palace 2-2 Everton: Palace Dominated but Couldn't Find a Winner
Crystal Palace generated 3.29 xG, six big chances, and an xPoints haul of 2.06 — and walked away with one point. Glasner's 3-4-2-1 created space repeatedly across the pitch, but Everton's defensive discipline held long enough to earn a share of the spoils their underlying numbers barely deserved.
Nottingham Forest 1-1 Newcastle: Anderson's Late Equaliser in Emotional Comeback
The xG was tight — Forest 1.46, Newcastle 1.65 — and the xPoints (1.23 vs 1.52) suggest Newcastle edge moral victory. But this draw was earned by Nottingham Forest's collective defensive grit and one man's late intervention to deny what had looked like a certain Newcastle winner.
West Ham 0-1 Arsenal: Trossard and Raya Seal Title-Defining Three Points
This was not a football match so much as a slow-burning stress test, and Arsenal passed it — just. Trossard's 83rd-minute winner punctured a suffocating deadlock that West Ham's compact 3-4-2-1 had maintained far longer than Arsenal's xG advantage deserved.
Bayern 1-1 PSG: the tie was over after 180 seconds
Ousmane Dembélé scored in the third minute at the Allianz, and from that point Bayern had ninety minutes to score twice against a side that doesn't concede twice. They couldn't. Khvicha Kvaratskhelia was the best player on the pitch on a night PSG were just better. On aggregate 6-5, they face Arsenal at the Puskás Aréna on 30 May.
Arsenal 1-0 Atlético: Twenty years closed in 90 minutes
One Trossard shot, one Oblak parry, one Saka finish at the stroke of half-time. Arsenal's first Champions League final since 2006 was sealed not by the chaos this competition has so often demanded, but by the discipline they've built all season — a single moment of quality, then ninety minutes of doing everything else right. Budapest awaits.
Arsenal vs Atlético, 2nd leg: a tie poised between set-pieces and Simeone's fortress
Level on aggregate after a 1-1 in Madrid where the underlying numbers said Atlético deserved more — out-shooting Arsenal 18-11 with the woodwork, a VAR review and a sharp Raya keeping the away side level. Now the Emirates leg, with a Simeone team perfectly comfortable defending one moment of quality for ninety minutes. The route to Budapest is one set-piece, one transition, or one penalty-area mistake from being decided.
Bayern vs PSG, 2nd leg: defending a one-goal lead in Munich is its own kind of test
The 5-4 Parisian thriller at the Parc des Princes was the most chaotic semi-final 1st leg in a decade. The 2nd leg cannot, and will not, be like that. PSG bring a one-goal cushion to an Allianz where Kompany's positional press has built the Bundesliga title. The asymmetry of what each side actually needs may be the most telling thing about the next 90 minutes.
Everton 3-3 Manchester City: A 12-minute crater in the title race
Manchester City had 75% of the ball, the better expected goals tally, and a 1-0 lead at half-time. They left Hill Dickinson Stadium with a single point, and a title race that mathematically still exists in name only. From 0-1 to 3-1 in twelve minutes; Doku's 90+7' equaliser saved a point that doesn't really save anything.
Arsenal 3-0 Fulham: First-Half Dominance Made the Second a Formality
Arsenal were ruthless on the scoreboard but the xG told a more honest story: 2.02 apiece. Viktor Gyökeres put Arsenal ahead from a high-quality chance in the 9th minute, and Fulham carried equivalent threat across 90 minutes without finding the composure to convert it.
Atlético 1-1 Arsenal: A draw the underlying numbers don't endorse
Arsenal leave the Metropolitano with the away-leg parity they wanted on the scoreboard. The shot map, the corner count, the cancelled penalty at 80' — every other layer of the data argues this was Atlético's night, decided by Oblak, the woodwork, and the VAR booth in Madrid.
PSG 5-4 Bayern: The night Manuel Neuer didn't make a save
Bayern out-shot, out-passed, out-possessed PSG and won the expected-goals battle by 1.16. They lost 5-4. The hinge isn't tactical complexity — it's that every PSG shot on target became a goal, and Manuel Neuer registered zero saves. The most interesting line in the data sheet is the empty cell.
Manchester City 2-1 Southampton: A Wonder Goal, a Late Comeback, and a Pep Substitution Decision That Worked
Finn Azaz scored. Doku replied. Then Nico González struck a thirty-yard rising drive that flew into James Trafford's opposite-end Wembley goalkeeper-counterpart top corner and sent Manchester City to a record fourth consecutive FA Cup final. The match said as much about Tonda Eckert's Southampton as it did about City's late-spring squad rotation.
Arsenal 1-0 Newcastle: Eze's Stunner Masked an xG Story for the Visitors
Call it what it is: Arsenal nicked this one. Their xG of 0.64 versus Newcastle's 0.87 tells the story of a side that scored with their best moment in the 9th minute and then spent 81 minutes hoping the scoreline held.
Manchester City 2-1 Arsenal: How an Injury-Hit Arsenal, a Donnarumma Howler, and a Cherki Goal Reframed the Title Race
Saka was out. Calafiori was out. Arsenal still arrived at the Etihad with a six-point lead and walked out with a three-point gap and a City side holding a game in hand — a title race they no longer fully control. The tactical evidence said as much about Arsenal's depth as it did about City's late-spring restoration.
Manchester City 2-1 Arsenal: Title Six-Pointer Decided by Fine Margins
Manchester City edged a genuinely open contest 2-1, but the xG — 2.82 vs 2.63 — tells you how close this was. Cherki struck first but Arsenal levelled almost immediately, and for long stretches Arteta's side had the better of the game without finding a way back in front.
Bayern Munich 4-3 Real Madrid: A Camavinga Red Card and Two Late Bayern Goals That Ended an Era
Arda Güler scored after thirty-five seconds. Madrid led 3-2 going into the final quarter-hour. Then Camavinga was sent off, Luis Díaz equalised at 89, and Olise scored in stoppage time to send Bayern through 6-4 on aggregate. The night that may, in retrospect, define the post-Mbappé Real Madrid project.
Real Madrid 3-2 Atlético: A Bernabéu Derby Decided by a Trent Assist, a Hancko Penalty, and a Valverde Red Card
Vinícius scored twice — the second from a Trent Alexander-Arnold assist that ended the day's tactical conversation about whether the Englishman should still be at Madrid. Atlético were the better team for stretches. The 3-2 result, after Valverde's red card and a frantic ten-man finish, told a more complicated story than the headline figures.