Heat a large pot over medium-high heat and add the butter, onions, garlic, cardamom, cinnamon, bay leaves, cumin seeds, and fennel seeds, and salt. Cook until the onions are soft and translucent, about 5-10 minutes.
Add the ginger, tomato paste, paprika, allspice, and pepper. Cook stirring constantly until fragrant, about 1 minute more. Add the chicken stock and stir to scrape up any browned bits from the bottom of the pot. Add the beef, pressing to ensure it is submerged in liquid. Simmer for 2 hours, or until the meat is tender (chicken takes about an hour).
Remove the meat from the stew base and set aside. Remove and discard the bay leaves, cinnamon sticks, and cardamom pods. Return the stew base to a rapid boil and reduce the volume by half, about 15 minutes. Stir in yogurt then add back the beef. Serve with cilantro, if desired.