Soak the Beans
Rinse the beans and discard any debris. Place the beans in a large bowl, cover with water, and soak for at least 6-8 hours or overnight. Drain and rinse before cooking.
Sauté Vegetables
In a large pot or Dutch oven, heat the olive oil over medium heat. Add the onion, garlic, bell pepper, and celery. Sauté for 5-6 minutes, or until the vegetables are softened.
Add Beans and Liquids
Add the soaked beans, diced tomatoes with their liquid, tomato paste, and broth to the pot. Stir to combine.
Add Seasonings and Meat
Stir in the smoked paprika, cumin, and bay leaf. Add the ham hock, sausage, or diced ham if using. Bring the soup to a boil, then reduce heat to low and cover. Simmer for 1.5 to 2 hours, or until the beans are tender.
Adjust Seasoning
Taste the soup and season with salt and pepper as needed. For a thicker texture, use the back of a spoon to mash some of the beans against the side of the pot.
Serve
Ladle the soup into bowls and garnish with fresh parsley or green onions. Enjoy with a slice of crusty bread or a side salad.