Heat the olive oil in a large saucepan and slowly fry the carrots, onion and celery until soft and dark. This will take about 20 minutes but it’s worth it – the slow cooking gives a lovely taste. Add the garlic, chard stalks and half the parsley, and stir to prevent sticking. Stir in the tomatoes and cook for 10 minutes or until reduced.
Add half the Swiss chard leaves, half the cavolo nero, three-quarters of the beans, and the boiling stock. Bring to the boil, then reduce the heat. Simmer for 30 minutes. Pour in more stock if needed – don’t add too much – it should be thick.
Add the remaining Swiss chard and cavolo nero and blanch briefly so they remain green and crisp. Season when slightly cooled.
Purée the remaining cannellini beans coarsely in a blender with some of the cooking liquid. Add to the soup – it should be very green. Stir in the herbs and serve hot with Parmesan and a drizzle of extra virgin olive oil.