In a large pot, char the halved onion and ginger over an open flame or under a broiler until slightly blackened.
Add the beef bones, cinnamon sticks, star anise, cloves, cardamom pod, coriander seeds, and fennel seeds to the pot.
Pour in the water and bring to a boil. Skim off any foam that rises to the surface.
Reduce the heat to low, cover, and simmer for at least 2 hours, or up to 4 hours, to allow the flavors to develop.
Strain the broth through a fine-mesh sieve or cheesecloth. Discard the solids.
Season the broth with salt, sugar, and fish sauce to taste. Keep warm over low heat.