Primavera de 1924. Lev Glebovich Ganin vive en una casa de huéspedes rusa en Berlín. Además de Ganin, el matemático Alexei Ivanovich Alferov, un hombre "con una barba delgada y una nariz brillante e hinchada", "un viejo poeta ruso" Anton Sergeyevich Podtyagin, y Klara, "una joven con mucho cuerpo, de seda negra y muy acogedora", que trabaja como mecanógrafa y enamorada, vive en una casa de huéspedes. Ganina, así como los bailarines de ballet Colin y Gornotsvetov. "Una sombra especial, un mimetismo misterioso" separa a este último de otros huéspedes, pero "hablando honestamente, no se puede condenar la felicidad de la paloma de esta pareja inofensiva".
El año pasado, al llegar a Berlín, Ganin inmediatamente encontró un trabajo. Era un trabajador, y un camarero, y un extra. Le queda suficiente dinero para salir de Berlín, pero para esto necesita romper con Lyudmila, cuya relación ha estado vigente durante tres meses y está harta de él. Pero cómo romper, Ganin no lo sabe. Su ventana se abre a la vía del ferrocarril y, por lo tanto, "la oportunidad de irse es una broma obsesiva". Le anuncia a la amante que se irá el sábado.
Ganin se entera de Alferov que el sábado llega su esposa Mashenka. Ganin lleva a Alferov a sí mismo para mostrarle fotografías de su esposa. Ganin aprende su primer amor. Desde este momento está completamente inmerso en los recuerdos de este amor, le parece que era exactamente nueve años más joven. Al día siguiente, el martes, Ganin anuncia a Ludmila que ama a otra mujer. Ahora es libre de recordar cómo, hace nueve años, cuando tenía dieciséis años, él, recuperándose de la fiebre tifoidea en una finca de verano cerca de Voskresensk, creó una imagen femenina para sí mismo, que conoció en realidad en un mes. Mashenka tenía una "trenza castaña en un lazo negro", "ojos tártaros ardientes", una cara de piel oscura, una voz "móvil, enterrada, con sonidos inesperados en el pecho". Masha era muy alegre, amaba los dulces. Ella vivía en una casa de campo en Voskresensk. Una vez con dos amigos, ella se subió a la glorieta en el parque. Ganin habló con las chicas, acordaron ir en bote al día siguiente. Pero Mashenka vino solo. Todos los días comenzaron a encontrarse al lado del río, donde una mansión blanca y vacía estaba en una colina.
Cuando en una tormentosa noche negra, en la víspera de partir para San Petersburgo a principios del año escolar, se reunió con ella por última vez en este lugar, Ganin vio que las persianas de una de las ventanas de la finca estaban entreabiertas, y un rostro humano estaba presionado contra el cristal desde el interior. Este era el hijo del vigilante. Ganin rompió el cristal y comenzó a "golpear con un puño de piedra en su cara mojada".
Al día siguiente fue a Petersburgo. Masha se mudó a Petersburgo solo en noviembre. Comenzó la "era de nieve de su amor". Fue difícil de encontrar, deambular por el frío durante mucho tiempo fue doloroso, por lo que ambos recordaron el verano. Por las tardes, hablaban por horas por teléfono. Todo amor requiere privacidad, y no tenían un refugio, sus familias no se conocían. Al comienzo del año nuevo, Mashenka fue llevado a Moscú. Y es extraño: esta separación fue un alivio para Ganin.
En el verano, Masha regresó. Llamó a Ganin a la cabaña y dijo que su padre nunca querría alquilar una cabaña en Voskresensk nuevamente y que ahora vive a cincuenta millas de allí. Ganin fue a su bicicleta. Llegó ya en la oscuridad. Mashenka lo estaba esperando a las puertas del parque. "Soy tuyo", dijo. "Haz lo que quieras conmigo". Pero se escucharon extraños susurros en el parque, Mashenka era demasiado dócil e inmóvil. "Me parece que viene alguien", dijo, y se levantó.
Se reunió con Mashenka un año después en un tren rural. Se bajó en la siguiente estación. Nunca se volvieron a ver. Durante la guerra, Ganin y Mashenka intercambiaron varias veces cartas gentiles. Estaba en Yalta, donde "se estaba preparando una lucha militar", en algún lugar de la Pequeña Rusia. Luego se perdieron el uno al otro.
El viernes, Colin y Gornotsvetov, con ocasión de recibir un compromiso, el cumpleaños de Klara, la partida de Ganin y la supuesta partida de Podtyagin a París, deciden celebrar una "celebración" para su sobrina. Ganin con Podtyagin va al departamento de policía para ayudarlo con una visa. Cuando se recibe la tan esperada visa, Podtyagin deja accidentalmente un pasaporte en el tranvía. Él tiene un ataque al corazón.
La cena festiva es triste. Podtyagin vuelve a enfermarse. Ganin le da un trago al ya borracho Alferov y lo manda a dormir, pero él mismo se imagina cómo se encontrará con Masha en la estación por la mañana y se la llevará.
Después de empacar sus cosas, Ganin se despide de los huéspedes que se sientan al lado de la cama del Podtyagin moribundo y se dirige a la estación. Queda una hora antes de que llegue Mashenka. Se sienta en un banco en el parque cerca de la estación, donde hace cuatro días recordó la fiebre tifoidea, la finca y la corazonada de Masha. Poco a poco "con una claridad despiadada" Ganin se da cuenta de que su aventura con Masha ha terminado para siempre. "Duró solo cuatro días, estos cuatro días fueron quizás los momentos más felices de su vida". La imagen de Mashenka permaneció con el poeta moribundo en la "casa de las sombras". Y no hay otro Mashenka y no puede ser. Está esperando el momento en que un tren expreso que viene del norte pasa a lo largo del puente del ferrocarril. Toma un taxi, va a otra estación y se sube a un tren que va al suroeste de Alemania.