
Prag im März 1945: Während alliierte und russische Truppen immer näher rücken, herrschen die deutschen Besatzer mit aller Härte über die Stadt. Nach dem Mord an einer deutschen Offizierswitwe übernimmt der tschechische Beamte Jan Morava die heiklen Ermittlungen. Dabei wird er vom österreichischen Gestapo-Beamten Erwin Buback überwacht, der insgeheim im Auftrag des NS-Regimes Widerstandskämpfer innerhalb der Prager Polizei ausfindig machen soll. Als ein weiterer Mord nach dem gleichen ritualisierten Muster geschieht, erkennt das ungleiche Duo, dass es sich um einen Serienmörder handelt. Auch beim zweiten Opfer, einer Tschechin, wurde das Herz entfernt.
Jitka Modrá, die Verlobte und Assistentin von Morava, findet heraus, dass die Männer der beiden Opfer auf dem Vyšehrader Friedhof bestattet wurden. Auf einer Abendveranstaltung treffen Buback und Meckerle mit seiner Frau und seiner Geliebten Marleen Baumann aufeinander. Baumann hat im Krieg ihre Eltern und ihren Mann verloren, Buback seine Frau und seine Tochter. Nachdem Wien bereits gefallen ist, plant Baumann, mit Buback unterzutauchen. Der möchte aber erst den Täter fassen. Bei einem dritten, unverheirateten Opfer, Jana Kavanová, fehlt ebenfalls das Herz. Sie hatte sich um das Grab ihres verstorbenen Onkels gekümmert. Die Ermittler beschließen, dem Serientäter eine Falle zu stellen. Als Lockvogel stellen sich sowohl Jitka Modrá als auch Marleen Baumann zur Verfügung. Nach einem Aufruf an alle Dienststellen erhalten Morava und Buback von einem Pfarrer den Hinweis auf die Heilige Reparata, der das Herz herausgeschnitten wurde. Ein Sünder hatte ihm etwas gebeichtet, aufgrund des Beichtgeheimnisses möchte er jedoch nicht dessen Namen nennen. Die Lockvogelaktion geht schief, ein Polizist, der sich um den Schutz der beiden Lockvögel kümmern sollte, wird getötet.
Jitka wird bei der Lockvogel-Aktion schwer verletzt. Währenddessen gelingt es Buback, den Namen des Mörders zu erfahren – es handelt sich um Antonín Rypl. Die Polizei durchsucht Rypls Wohnung, findet aber nur Hinweise auf seine Flucht. Als die tschechische Polizei durch die Gestapo entwaffnet wird, scheint die Suche nach Rypl fast unmöglich. Doch Morava und Buback geben nicht auf und scheinen Rypl dicht auf den Fersen, als plötzlich der Prager Aufstand ausgerufen wird. Im Chaos des Aufstands eilt Morava zum Stadtfunk, um der tschechischen Polizei zur Seite zu stehen.
Während im belagerten Stadtfunk ein Feuergefecht zwischen tschechischen Polizisten und deutschen SS-Soldaten tobt, probiert Morava einen Waffenstillstand auszuhandeln. Rypl kann wiederholt untertauchen, indem er seinen eigenen Tod vortäuscht und die Identität eines Toten annimmt. Buback bringt Marleen in Jitkas Wohnung in Sicherheit. Als Morava Rypls Täuschung durchschaut, eilt er zu Jitkas Wohnung. Doch dort haben Rypl und seine Gruppe Buback und Marleen bereits gefangen genommen. Ein Schusswechsel folgt.