Smash the black cardamom pods, and remove the seeds. Place in a small bowl with the cinnamon, cloves, whole chilies (if using), whole green cardamom, fennel seeds, and whole mace. If using ground chilies or ground mace, omit here because you will add them a little later.
In a spice grinder, grind these whole spices to a coarse powder. Using a sieve, separate the larger pieces and run them through the grinder again. Return to the same bowl and if you didn’t use the whole chilies and mace earlier, stir them in now along with the ground ginger and salt.
In a large sauté pan or dutch oven, heat 2 tablespoons ghee over medium heat and add a pinch of asafetida, if using. Stir for one minute. Add the cumin seeds and sauté for a minute or two until aromatic and the cumin seeds turn a slightly darker shade. Stir in the ground spices and sauté for 2 to 3 minutes to toast them until aromatic. Stir frequently so that the spices don't burn. Add a splash of water if the spices stick or are too thick.
Add the meat and yogurt and stir to combine; add water to just cover the meat. Cover the pan and simmer over low heat. The curry should only be slightly bubbling.
Take peek at the masala every 15 minutes or so to check on the liquid level, and stir to prevent burning. Add water as needed and cook until the meat is tender. This will take about an hour for lamb or beef, depending on the size of your cubes of meat. Also, adjust the cook time depending on the protein you are using. Chicken will probably take 15 to 20 minutes.
When the meat is cooked, check for seasoning. You are looking for a thick sauce, but not a dry one. Add a little water if your curry has cooked down completely. If your meat is tender but the sauce is watery, remove the meat and cook the sauce down over medium-hight heat until it reaches the consistancy you are looking for. Taste for seasonings; add additional chili powder, salt, or additional yogurt to mellow the spicing, to your taste.
Traditional recipes call for ratanjot, a hard to find herb that lends a vibrant red color to food. I’ve left it out because apparently it is used not so much for flavor, but for its color.
If you are not a fan of lamb, rogan josh can be made with beef, pork, turkey, or boneless chicken thighs as well. Chicken breasts tend to dry out, but use them if you prefer, being careful not to overcook the meat.
Cooking meat on the bone is more traditional, and if you would like to do that and you are using lamb, have your butcher cut lamb shanks into 4 or 5 pieces, then proceed with the recipe.
Shortcut: buy meat cut into the size you want to cook with.
Use coconut cream or milk instead of yogurt if you are cooking dairy-free.
Rogan josh curry is a great make-ahead dish and it will taste even better the next day, as will most curries.