Heat 1 tablespoon of oil in a large saucepan. Add the lamb and brown-you will need to do this in a couple of batches. Remove to a plate.
Heat the remaining oil in the same pan and add the onions. Cook stirring until soft. Stir in the garlic and ginger, cook for 1 minute then add the cardamom and curry paste. Cook stirring for another minute.
Add the tomatoes, coconut milk and stock stirring to combine.
Return the shanks to the saucepan; bring to a simmer then cover. Simmer gently for about 2 hours or until the lamb is tender.