1Cut the trimmed lamb leg into approximately 4 cm cubes. Finely chop the onion, then mince the garlic and ginger.
Place the yogurt in a bowl and stir until smooth. Mix in half of the garlic, half of the ginger, half of the garam masala, and half of the salt.
Add the lamb to the yogurt mixture and coat it thoroughly. Cover and marinate in the refrigerator for at least 1 hour, or up to 8 hours. Let it stand at room temperature for 20 minutes before cooking.
Heat the vegetable oil in a large, heavy-bottomed pot over medium-high heat. Lift the lamb pieces from the marinade, allowing excess yogurt to drip off, and brown them in batches for 2–3 minutes per side. Transfer the browned lamb to a plate and reserve the remaining marinade.
Reduce the heat to medium. Add the chopped onion to the same pot and cook for 8–10 minutes, stirring frequently, until soft and golden.
Add the remaining garlic and ginger. Cook for 1 minute, then stir in the ground cumin, ground coriander, Kashmiri chili powder, ground cardamom, and remaining garam masala. Cook for 30 seconds, stirring continuously so the spices do not burn.
Add the crushed tomatoes and remaining salt. Cook for 5–7 minutes, stirring occasionally, until the tomatoes thicken slightly and the oil begins to appear around the edges.
Lower the heat. Gradually stir the reserved yogurt marinade into the tomato mixture, adding a little at a time to help prevent curdling.
Return the browned lamb and any accumulated juices to the pot. Stir well, cover, and simmer gently over low heat for 75–90 minutes, stirring every 15 minutes, until the lamb is tender. If the sauce becomes too thick, keep the pot tightly covered so the lamb's juices loosen it naturally.
Uncover and simmer for another 5–10 minutes if a thicker sauce is desired. Taste and adjust only with the measured seasonings if needed, then rest the Rogan Josh for 5 minutes before serving.