El capitán Jefferson Kyle Kidd (Tom Hanks), un veterano de la Guerra Civil en Estados Unidos, dedica su vida a viajar por los pueblos del Oeste, contando historias tomadas de las crónicas de los periódicos.

Esta cotidianidad, que él ha convertido en su nueva forma de vida, es atravesada por el hallazgo de una alemana huérfana en Texas. La niña fue secuestrada por los indios americanos cuando era pequeña y ahora ellos han sido asesinados. Al enterarse de esto, el capitán decide emprender un viaje de retorno hacia una pequeña comunidad alemana en Estados Unidos, donde viven los tíos de Johanna (Helena Zengel).
La distancia cultural entre la pequeña y el capitán radica en varios aspectos, empezando por el lenguaje. Ella habla en kiowa —el idioma de los indios— y él habla en inglés. Al principio, Johanna ni siquiera comprende que ese es su nuevo nombre, ya que en su cabeza sigue llamándose Cigarra. Verlos juntos hace que parezca imposible conciliar sus diferencias: él es un hombre adulto, ella una niña pequeña; él un hombre civilizado, ella una niña salvaje. Sin embargo, hay algo que les conecta entre sí, la simpatía.