In a large pot or Dutch oven, heat the oil over medium-high heat. Add the onion, halved serrano pepper, garlic, ginger, salt, and pepper. Cook, stirring occasionally, until the onions soften, about 4 minutes.
Pour in the beef broth, fish sauce, hoisin sauce, and lime zest. Bring to a simmer.
Meanwhile, place the star anise, whole cloves, and coriander seeds in a mortar. Use a pestle to press down and break the star anise into smaller pieces first, as it’s more rigid.
Then, continue grinding in a circular motion, applying steady pressure to release the spices' oils until they are coarsely ground. (Alternatively, you can place the spices in a sturdy zip-top bag. Use the bottom of a heavy pan or a rolling pin to press and smash the spices into a coarse blend.)
Add the crushed spices to the broth, along with the bay leaves, cinnamon sticks, and cilantro.
Reduce the heat to medium-low, cover, and let the broth simmer gently while you prepare the meatballs.