Willow Ufgood (Warwick Davis) mieszka w krainie karłów, nazywanych Nelwynami. Pewnego dnia jego dzieci odnajdują nad rzeką niemowlę. Postanawiają się nim zaopiekować. Jednak niepokój wzbudza fakt, że jest to córka Daikinów, czyli wielkich ludzi. Okazuje się, że dziecko to ma zapoczątkować koniec panowania złej królowej Bavmordy (Jean Marsh). Wysyła ona swoje oddziały, by odnalazły i zabiły niemowlę. Willow przywiązał się do dziewczynki i pokochał ją. Czy pomimo swojego niewielkiego wzrostu uda mu się ochronić Elorę?
Królowa Bavmorda (Jean Marsh) obawia się przepowiedni mówiącej, że narodzi się dziecko, które pokona jej potęgę, magię i zakończy jej panowanie. Okrutna władczyni nakazuje uśmiercenie wszystkich nowo narodzonych dziewczynek. Jednak akuszerka, odkrywając znamię na ręku dziewczynki, ukrywa ją i spuszcza na rzekę w koszu. Dziecko odnajduje rolnik Willow (Warwick Davis), należący do rasy pokojowych Nelwynów, którego największym marzeniem jest zostać magiem. Przygarnia dziecko, lecz gdy wioskowe święto zostaje przerwane brutalnym atakiem tropiącej bestii nasłanej przez Bavmordę, rada wioski nakazuje mu odnieść dziecko Daikinom - „dużym ludziom”, do których należy. Willow wyrusza więc w podróż, a do pomocy ma Madmartigana (Val Kilmer), Daikina z kryminalną przeszłością, dwa wyjątkowo brudne i wciąż rozrabiające elfy oraz czarodziejkę Fin Raziel (Patricia Hayes), którą Bavmorda zaklęła w piżmoszczura. Willow ma do pokonania wiele trudności, musi również spróbować odkryć drzemiącą w nim magię, by w końcu wraz z towarzyszami rzucić wyzwanie złej królowej.