Peel and chop the onion, then peel and finely grate the garlic and ginger (keep them separate). Dice the fresh tomatoes or drain and dice the tinned tomatoes, reserving the juice. Quarter the Serrano chillies lengthways, then finely slice the pepper.
Heat 1 tablespoon of oil in a heavy-based saucepan over a medium-high heat. Brown the goat all over, stirring regularly. Remove to a bowl with the juices.
Return the pan to a medium heat with 2 tablespoons of oil, the onion and garlic. Fry for about 4 minutes, or until softened.
Add the fresh or tinned tomatoes and cook until they're almost completely broken down, stirring often.
Pierce and add the Scotch bonnet (if you like your food really spicy) – piercing it will gently draw out the heat as the stew cooks without overpowering it.
Add 100ml of water to loosen, if needed, then season with a pinch of sea salt and 1 teaspoon of coarse black pepper. Stir in the Serrano chillies and pepper, and cook for several minutes.
Add any reserved tomato juices and the stock, then return the browned goat to the pan with its juices. Stir well.
Cover, reduce the heat to low and simmer for 2 to 3 hours, or until the goat is almost falling apart.
Add the spinach and cook for about 10 minutes, or until the spinach wilts. Discard the Scotch bonnets, check the seasoning, then chop and scatter over the coriander leaves. Serve on its own or with plain basmati rice.