Sachverhalt: A. A.a. A._, Staatsangehörige von Burkina Faso, und B._ sind die Eltern von C._ (geb. 2008) und D._ (geb. 2012). Die unverheirateten Eltern leben getrennt. Der Vater ist ein in der Schweiz wohnhafter österreichischer Staatsbürger. Die Mutter ist im Jahr 2006 von Ghana aus in die Schweiz eingereist. Sie verfügt hier über keinen Aufenthaltstitel und hält sich seit Februar 2015 in einem Durchgangszentrum für Asylbewerber in U._ auf. Anfänglich verfügte die Mutter über die alleinige elterliche Sorge beider Kinder. Die Kindes- und Erwachsenenschutzbehörde (KESB) der Stadt Zürich ordnete im Herbst 2013 indessen eine Fremdplatzierung der Kinder sowie die Errichtung einer Beistandschaft nach Art. 308 Abs. 1 und 2 ZGB an. A.b. B._ stellte im Februar 2014 das Gesuch, die Kinder seien in seine Obhut zu geben; zudem beantragte er das alleinige oder geteilte Sorgerecht. Nach umfangreichen Abklärungen beschloss die KESB am 25. Juni 2015, die Kinder C._ und D._ zwar unter die gemeinsame elterliche Sorge von A._ und B._, aber unter die alleinige Obhut des Vaters zu stellen. Seither leben die beiden Kinder im väterlichen Haushalt. Die Beistandschaft nach Art. 308 Abs. 1 und 2 ZGB wurde beibehalten. Auf Beschwerde beider Eltern hin schränkte der Bezirksrat Zürich die Aufgaben der Beistandschaft ein. Im Übrigen bestätigte er die Anordnungen der KESB (Entscheid vom 17. März 2016). B. Dagegen erhob A._ Beschwerde beim Obergericht des Kantons Zürich mit dem Antrag, die Obhut hinsichtlich beider Kinder sei ihr zuzuweisen; eventuell sei die Sache zur Sachverhaltsabklärung und Neubeurteilung zurückzuweisen. Das Obergericht wies die Beschwerde ab (Urteil vom 25. Mai 2016). C. A._ führte am 27. Juni 2016 Beschwerde in Zivilsachen. Sie schliesst, die Sache sei zur Neubeurteilung an die Vorinstanz zurückzuweisen. Ausserdem beantragt sie die unentgeltliche Rechtspflege. Das Bundesgericht hat die kantonalen Akten, aber keine Vernehmlassungen eingeholt.