아일랜드의 작은 산골 마을에 살고 있는 다비 오길(Darby O'Gill: 알버트 쉐프 분)은 작은 요정 레프리콘의 왕과 친구가 된다. 레프리콘은 세가지 소원을 들어주는 아일랜드 전설 속의 요정. 다비는 늙어서 영주의 관리인 자리에서 쫓겨날 처지이다. 요정왕은 이 사실을 알고 다비를 요정 왕국에 와서 살게 하지만, 다비는 꾀를 써서 외동딸 케이티(Katie: 자넷 먼로 분)에게 돌아간다. 브라이언 왕(King Brian: 지미 오디어 분)은 다비를 다시 요정왕국으로 잡아 가려고 인간세상에 나왔다가 다비의 계교에 빠져 잡히는 신세가 된다. 다비는 왕에게 세가지 소원을 들어 달라고 요구하지만, 무슨 소원을 말할지 마음을 정하지 못한다. 한편 케이티는 영주를 따라 관리인집에 찾아온 젊은 더블린 청년 마이클(Michael McBride: 숀 코넬리 분)에게 호감을 느낀다. 그러나 마이클이 새로온 관리인이고, 그 때문에 부녀가 관리인집에서 쫓겨나게 된 것을 안 케이티는 마이클에게 화를 내고 밤중에 산속에서 말을 찾으러 나갔다가 벼랑에서 떨어져 중태에 빠진다. 죽음의 마차가 케이티를 데리러 오는 것을 본 다비는 브라이언 왕에게 딸 대신 자기를 마차에 태워 달라는 소원을 말한다. 브라이언은 다비를 속여 소원이 무효화 되게 해서 케이티와 다비의 목숨을 구해준다.