Nur die USA und Ungarn haben dagegen gestimmt. Tschechiens populistisches Staatsoberhaupt konnte offenbar noch in letzter Minute überzeugt werden, für den Pakt zu stimmen.
Insgesamt 181 der 193 UN-Mitgliedsstaaten stimmten für den Pakt. Drei enthielten sich, acht Staaten blieben der Abstimmung fern.
Der Pakt soll Flüchtlingen unter anderem besseren Zugang zu Arbeit, Gesundheitsversorgung und Schulen verschaffen.
Wie der Migrationspakt ist er rechtlich nicht bindend, soll die Staaten aber politisch verpflichten. Ziel ist, die größten Aufnahmeländer besser zu unterstützen.
Die meisten Flüchtlinge leben nach UN-Angaben in der Türkei, in Pakistan, Uganda und im Libanon. Ende 2017 gab es weltweit 68,5 Millionen Flüchtlinge.
dpa/rasch/cd