Heat the oil or ghee in a large pot over medium heat.
Add the chopped onions and cook until they become golden brown.
Stir in the garlic and ginger paste, and cook for an additional minute.
Add the beef shank or bone-in beef and cook until it is browned on all sides.
Add the chopped green chilies and tomatoes. Cook until the tomatoes break down and the oil starts to separate from the mixture.
Stir in the yogurt and cook for 2-3 minutes, allowing it to blend into the sauce.
Add the Nihari masala, ground cumin, ground coriander, turmeric, red chili powder, garam masala, chili flakes (if using), and salt. Mix well to combine the spices with the meat and sauce.
Pour in the water or beef broth and bring to a boil.
Reduce the heat to low, cover the pot, and let it simmer for 4-6 hours, or until the meat is tender and the flavors are well-developed. You can also use a slow cooker for this step, cooking on low for 8-10 hours.
Once the meat is tender and the sauce has thickened, adjust the salt to taste.
Garnish with chopped fresh coriander leaves, thinly sliced fresh ginger, and fried onions (if using).
Enjoy your meal!