Preheat the oven to 190°C.
Score the skin of the belly pork with a sharp knife, then lightly oil on all sides. Rub the sea salt well into the skin and rub the five-spice powder all over the underside.
Arrange the onion slices in the base of a roasting tin and lay the pork on top, skin side up. Roast in the hot oven for about 30 minutes.
Lower the oven to 170°C and continue cooking for another hour. Check if the skin is really crispy and, if not, turn the oven up to 200°C and cook for a further 15-20 minutes. Don’t worry about overcooking belly pork, as its high fat content will keep it from drying out.
When the pork is ready, remove from the oven, transfer to heatproof dish, cover loosely with foil and set aside to rest in a warm place.
While the meat is resting, make the gravy. Tip out and discard any liquid fat still in the roasting tin. Heat the stock in a saucepan over a medium heat, then pour into the roasting tin and stir, scraping up any caramelized bits in the tin. Pour this mixture back into the saucepan and bring to the boil.
Lower the heat and cook gently for 5 minutes, then strain into a fresh saucepan. Add the cacao and soy sauce and return to a gentle boil, stirring all the time until the cacao melts. Reduce to thicken slightly (although the gravy shouldn’t be too thick). Taste and adjust the seasoning, if needed.
Remove the crackling from the pork, then slice the meat by dividing it between the ribs.
Pour a little hot gravy onto each serving plate and top with slices of meat, placing a helping of crackling alongside. Scatter over the shredded spring onions and serve with steamed rice and spinach.