How to Make It
Heat olive oil in a large, heavy pot or Dutch oven over medium-low. When oil shimmers, add onion, carrot, and celery; stir to coat with oil. Stir in salt to help draw out liquid from onions and season the foundation of the soup. Cook, stirring often and scraping bottom of pot with a flat-bottomed wooden spoon, reducing heat as necessary to maintain a gentle sizzle, until mixture is very soft and translucent, about 30 minutes. Increase heat to medium; cook, stirring often, until sofrito is caramelized, about 10 minutes.
Stir in the garlic and crushed red pepper, if using; cook, stirring constantly, about 1 minute. Stir in crushed tomatoes and wine, and stir, scraping up any browned bits on bottom of pot, until mixture is well combined. Increase heat to maintain a vigorous simmer (be careful of splattering tomato). Cook, stirring occasionally, until mixture is reduced to a jam-like consistency, about 20 minutes.
Add 8 cups water, bread, kale, and Parmesan rind, if using; stir, scraping bottom of pan to fully incorporate sofrito into liquid. Simmer until kale is tender and bread is dissolved, about 20 minutes. Stir in potatoes, and simmer until partially tender, about 15 minutes.
Meanwhile, puree 1 cup beans with 1 cup tap water or bean cooking liquid (if not using canned). Add bean puree and remaining 3 cups beans, and simmer until beans and potatoes are completely tender but not falling apart, about 25 minutes. Season with about 1 teaspoon more salt, or to taste, and a generous amount of black pepper.
Let soup cool to room temperature; cover and chill up to 3 days. Reheat soup gently before serving, and adjust seasonings as necessary. Divide among bowls, and top each with a drizzle of olive oil and freshly grated Parmesan cheese. Serve hot.