01 - Pat the lamb shanks dry with paper towels and season generously with salt and pepper on all sides.
02 - Heat vegetable oil in a large heavy-based pot or Dutch oven over medium-high heat. Sear lamb shanks on all sides until deeply browned, approximately 3-4 minutes per side. Remove and set aside.
03 - Add sliced onions to the same pot and sauté until golden brown and caramelized, about 10 minutes. Stir occasionally to prevent burning.
04 - Add minced garlic and grated ginger to the pot. Cook for 1-2 minutes until fragrant, stirring constantly to prevent sticking.
05 - Stir in all ground spices (coriander, cumin, garam masala, turmeric, chili powder, black pepper) and whole spices (bay leaves, cloves, cardamom pods, cinnamon stick). Toast for 1 minute, stirring constantly until fragrant.
06 - Add chopped tomatoes to the pot and cook for 5 minutes, allowing them to soften and release their juices into the spice mixture.
07 - Return the seared lamb shanks to the pot. Pour in the stock and bring the mixture to a gentle simmer.
08 - Cover with a tight-fitting lid, reduce heat to low, and cook gently for 2.5 hours. Turn the shanks occasionally to ensure even cooking.
09 - Stir in the yogurt, fresh tomatoes, and green chili. Simmer uncovered for another 45-60 minutes until the lamb is fork-tender and falling off the bone. The sauce should be thickened.
10 - Skim any excess fat from the surface if desired. Adjust seasoning with additional salt to taste.
11 - Garnish with fresh chopped cilantro and serve with lemon wedges on the side.