Komisch modern sprookje waarin Christina Ricci vanwege haar uiterlijk altijd binnen gezeten heeft en nu haar ware ik wil vinden in de buitenwereld
Penelope (Christina Ricci) is geboren in een familie waar een oude vloek op rust en heeft hierdoor een varkensneusje. Opereren lukt niet, dus wordt ze thuis opgesloten. De betovering kan alleen worden verbroken als Penelope geaccepteerd en geliefd wordt door "iemand van de eigen soort". Maar alle rijke jongemannen vluchten in paniek het huis uit zodra ze verschijnt. Alleen Max (James McAvoy) blijft staan. Penelope vindt hem erg aardig, totdat ze erachter komt dat zijn bedoelingen niet oprecht zijn. Zwaar teleurgesteld besluit ze van huis weg te lopen, op zoek naar aardige mensen en echte vrienden. Al snel sluit ze vriendschap met Annie (Reese Witherspoon), die haar laat zien dat niet iedereen alleen naar haar uiterlijk kijkt.