Jesse (James Jason Richter) é um adolescente cuja vida foi modificada por sua amizade com a baleia Willy. Jesse está passando o verão a bordo de um navio, auxiliando pesquisadores de baleias, incluindo Randolph Johnson (August Schellenberg), um velho amigo, e Drew Halbert (Annie Corley), uma oceanógrafa. Jesse usa um teclado eletrônico para se comunicar com Willy, sendo que quando ele toca um sinal através do sistema submarino de som do navio descobre que Willy está agora criando sua família. Enquanto Jesse, Randolph e Drew estudam e ajudam as baleias, um garoto de dez anos, Max (Vincent Berry), está acompanhando John Wesley (Patrick Kilpatrick), seu pai, em um barco de pesca. Logo Max descobre que John e sua equipe não estão pescando salmão, como ele acreditava, mas matando baleias, que é ilegal mas bem lucrativo, pois um quilo de carne de baleia vale 440 dólares no mercado negro.
Dois anos depois de ajudá-la a se libertar do cativeiro, o garoto Jesse (Jason James Richter) e e a orca Willy se reencontram na costa do Oceano Pacífico. O jovem leva uma vida tranquila ao lado de seus pais adotivos e a baleia assassina agora nada acompanhada de seus novos amigos. Os dois vão embarcar em uma nova aventura para evitar que um grande vazamento de óleo os separe mais uma vez.
Três garotos que residem em um subúrbio decidem ir até a cidade para pagar uma prostituta, pois desejam ver uma mulher nua. Eles quase são assaltados e por acaso são salvos por uma "profissional" (Melanie Griffith), que acaba se afeiçoando a um deles, um garoto órfão de mãe (Michael Patrick Carter). O garoto pretende unir ela e seu pai (Ed Harris), mesmo que tenha de mentir um pouco para chegar a este objetivo, e como ela está sendo perseguida por um criminoso e seu carro está com problemas ela vai ficando na pequena localidade onde ele reside, se apaixonando pelo pai do garoto. Porém, gradativamente as coisas se complicam.