In the town of Nazareth, things are so bad for Joaquim (SHAUN TOUB), Anna (HIAM ABBASS) and their family -- thanks to King Herod (CIARÁN HINDS) and the taxes his soldiers collect from everyone -- they decide to marry off their daughter Mary (KEISHA CASTLE-HUGHES) to Joseph (OSCAR ISAAC), a good man but someone Mary hardly knows.
The fact that they won't yet consummate their marriage doesn't console Mary who goes off to collect her thoughts. It's in that olive grove that Archangel Gabriel (ALEXANDER SIDDIG) appears and informs her that she's been chosen by God to bear His child who will be known as Jesus.
Realizing no one will believe such a story, Mary sets out to visit her cousin Elizabeth (SHOHREH AGHDASHLOO) whose husband Zechariah (STANLEY TOWNSEND) has received similar news that his barren wife will bear them another child. It is then that Mary miraculously becomes pregnant, a development that doesn't sit well with her parents or especially Joseph who's viewed as a cuckold by everyone else.
Yet, a more dire development has arisen. Knowing of the prophecy of the coming of the Messiah, King Herod has ordered that his men -- led by Tero (SAID AMADIS) -- find and kill this future leader, resulting in a wave of infanticide throughout the lands. When that doesn't work, he orders that a census be taken, resulting in everyone having to return to their ancestral home, an act he hopes will ferret out the future king.
That results in Joseph and Mary setting off on a perilous, one-hundred mile journey to Bethlehem. At the same time, and also aware of the prophecy, the Magi -- Melchior the scholar (NADIM SAWALHA), Balthasar the astronomer (ERIQ EBOUANEY) and Gaspar (STEFAN KALIPHA) the translator -- set off on an even longer trek to be there for the historic birth. From that point on, Joseph and Mary try to avoid Herod's soldiers and other obstacles as they make their way to Bethlehem.