In 1940, tijdens de Slag om Frankrijk, hebben geallieerde soldaten zich teruggetrokken in Duinkerken. Tommy, een jonge Britse soldaat, is de enige overlevende van een Duitse hinderlaag. Op het strand vindt hij duizenden troepen die wachten op evacuatie en ontmoet hij Gibson, die een lichaam aan het begraven is. Na een aanval van een Luftwaffe-duikbommenwerper vinden ze een gewonde man. Ze haasten zich met zijn brancard naar een hospitaalschip, in de hoop aan boord te geraken, maar krijgen het bevel te vertrekken. Het schip wordt tot zinken gebracht door duikbommenwerpers; Tommy ontmoet Alex. Ze vertrekken 's nachts met een destroyer, maar die wordt getorpedeerd door een U-boot. Gibson redt Tommy en Alex van het zinkende schip, en ze keren terug naar het strand.
Omdat er slechts één enkele, kwetsbare mol beschikbaar is voor het inschepen op diepliggende schepen, vordert de Royal Navy in Groot-Brittannië civiele schepen die het strand kunnen bereiken. In Weymouth vertrekt een burgerzeiler Dawson met zijn zoon Peter op zijn boot Moonstone, in plaats van haar door de marine te laten vorderen. Impulsief voegt hun tienerhand George zich bij hen, in de hoop iets noemenswaardigs te doen. Op zee redden ze een bibberende soldaat uit een wrak. Wanneer hij beseft dat Dawson naar Duinkerken vaart, eist de soldaat dat ze omkeren en probeert de controle over de boot te krijgen; in het gevecht loopt George een hoofdwond op die hem blind maakt. Elders steken drie RAF Spitfires het Kanaal over, op weg naar Duinkerken, met de opdracht de evacuatie te verdedigen. Nadat hun leider wordt neergeschoten in een luchtgevecht, neemt één van de piloten, Farrier, het commando over, maar de andere Spitfire wordt geraakt en slaat neer. De piloot, Collins, wordt gered door Moonstone.
Tommy, Alex en Gibson voegen zich bij enkele soldaten van een Highlanders-regiment en verbergen zich in een gestrande trawler in het intergetijdengebied buiten de geallieerde perimeter, wachtend op het opkomende tij om hem weer vlot te trekken. Duitse troepen schieten op de boot, en door de kogelgaten komt water naar binnen. Alex, in de hoop de boot te verlichten, beschuldigt Gibson, die heeft gezwegen, ervan een Duitse spion te zijn. Gibson onthult dat hij Frans is; hij stal de identiteit van de dode Britse soldaat die hij begroef, in de hoop met de Britten geëvacueerd te worden. De groep verlaat de boot wanneer deze begint te zinken, maar Gibson raakt verstrikt in een ketting en verdrinkt. Wanneer een nabijgelegen mijnenveger door een bommenwerper tot zinken wordt gebracht, manoeuvreert Moonstone om de mensen in het water aan te pakken, waaronder Tommy en Alex. Peter ontdekt dat George dood is. Gevraagd door de shell-shocked soldaat, liegt hij en zegt dat George in orde is. Farrier bereikt Duinkerken, voordat zijn brandstof opraakt. Hij vliegt over het strand, schiet een duikbommenwerper neer, redt schepen en troepen, en landt dan voorbij de perimeter. Hij steekt zijn vliegtuig in brand voordat hij door de Duitsers gevangen wordt genomen. In totaal worden 300.000 man geëvacueerd. Royal Navy Commander Bolton blijft om toezicht te houden op de evacuatie van de Fransen. Terug in Weymouth aangekomen, wordt Dawson gefeliciteerd omdat hij zoveel mannen heeft gered. De shell-shocked soldaat ziet hoe George's lichaam wordt weggedragen. Peter gaat naar de plaatselijke krant; een artikel op de voorpagina prijst George als een held. Tommy en Alex stappen op de trein en krijgen een heldenontvangst als de trein in Woking aankomt.