Coeurs ennemis est tiré du roman de Rhidian Brook, Dans la maison de l’autre (The Aftermath en V.O.), paru en 2013. L'auteur s'est inspiré de l'histoire de son grand-père, le colonel Walter Brook, un officier anglais dépêché en Allemagne pour remettre le pays sur pied après la Seconde Guerre mondiale. Bien qu'il ait réquisitionné une maison pour sa famille une fois sur place, il avait décidé de ne pas expulser les propriétaires allemands. Les deux familles ont vécu ensemble pendant cinq ans.
En 2010, Rhidian Brook propose l'histoire à Scott Free, la société de production des frères Ridley et Tony Scott. Il s'est avéré que les deux cinéastes ont vécu une situation similaire (à l'exception du triangle amoureux) lorsqu'ils avaient dix ans. Ils ont suivi leur père, membre important de l'armée, à Francfort puis Hambourg. Ridley Scott se souvient : "Ma maison à Francfort était en fait celle d’un officier allemand. Ma mère était très amie avec sa femme qui venait une fois par mois vérifier que nous nous occupions bien de la maison".
Chose peu courante : Coeurs ennemis est né avant le livre dont il est tiré. En effet, Rhidian Brook commençait à travailler sur le scénario lorsqu'il a été contacté par l'éditeur Penguin Books. Il se lance dans la rédaction du livre qui paraît en 2013. Tout en restant impliqué dans le développement du film, il est accompagné dans l'écriture du scénario par Joe Shrapnel et Anna Waterhouse.
Pour préparer son rôle de mère qui a perdu son enfant, Keira Knightley a étudié des livres traitant du deuil, parmi lesquels : L'année de la pensée magique de Joan Didion, La Douleur porte un costume de plumes de Max Porter et Apprendre la mort de C.S. Lewis.
Alexander Skarsgård a été séduit par la subtilité du scénario : "On représente souvent les Allemands comme les méchants, tandis que les alliés sont les gentils. Très souvent on retrouve un personnage allemand sympathique pour montrer qu’ils ne sont pas tous mauvais. Coeurs ennemis va bien plus loin que ça. Se rendre compte de la dévastation de Hambourg en 1945 et la misère qui y régnait [...] c’est à vous briser le coeur ! Ça montre les horreurs de la guerre que ce soit d’un côté ou de l’autre. Tout n’est pas noir ou blanc et ce n’est pas une question de gagnants et de perdants. C’est un regard très différent sur l’après Seconde Guerre mondiale".
Coeurs ennemis a été tourné en huit semaines en Allemagne et en République tchèque. Là, l'équipe s'est installée principalement sur deux sites de Prague : une raffinerie de sucre désaffectée, où une tonne de gravas fut amenée, et une rue complètement vidée avant le tournage, transformée par l'ajout d'un trottoir, de pavés, de lampadaires et de commerces.
L'extérieur de la Villa Lubert, où se déroule la majeure partie du film, a été trouvé aux abords de Prague, tandis que l'intérieur est celui d’une grande demeure près de Hambourg, dans le nord de l'Allemagne. Il fallait une maison suffisamment grande pour démontrer la richesse des Lubert et pour pouvoir accueillir une équipe de cinéma.