Place the dried beans in a large bowl and cover with cold water. Leave to soak overnight. This softens the beans and reduces cooking time. Drain and rinse before using.
In a large heavy bottomed pot, heat the oil over medium heat. Add the onion, bell pepper, and celery. Cook for 6 to 8 minutes until softened. Stir in the garlic and cook for another minute.
Add the thyme, cayenne, paprika, black pepper, and bay leaf. Stir to coat the vegetables. Add the ham hock or sausage and cook for 2 to 3 minutes to release flavour into the base.
Add the soaked beans and pour in the water or stock. Bring to a boil, then reduce to a gentle simmer. Cover and cook for 1 hour, stirring occasionally to prevent sticking.
After an hour, check the beans for tenderness. Continue simmering uncovered for another 30 to 45 minutes until the beans are creamy and the liquid has thickened slightly.
While the beans finish, rinse the rice under cold water. In a saucepan, bring 400 ml water and a pinch of salt to a boil. Add the rice, reduce heat to low, cover, and cook for 15 minutes. Remove from heat and let sit, covered, for 5 minutes.
Taste the beans and adjust salt and spice as needed. If using a ham hock, remove it, shred the meat, and return it to the pot. Discard the bone and bay leaf.
Using the back of a spoon, mash some of the beans against the side of the pot. This thickens the broth and gives the dish its signature creamy consistency.
Turn off the heat and let the beans rest for 10 minutes. This allows the flavours to settle and the texture to develop further before serving.
Spoon the rice into bowls and ladle the beans over the top. Garnish with chopped parsley or spring onions if desired. Serve with hot sauce on the side and cornbread for a traditional touch.