Place the dried cannellini beans in a large pot and cover with the water. Bring to a boil over high heat, boil 2 minutes, then turn off the heat, cover, and let stand 1 hour to quick-soak.
Add the halved onion, celery pieces, and bay leaf to the pot. Return to a gentle simmer and cook until the beans are tender but not falling apart, 60β75 minutes. Remove and discard the onion, celery, and bay leaf; keep the beans submerged in their cooking liquid and set aside.
In a wide soup pot, warm the extra-virgin olive oil over medium heat. Add the sliced garlic and red pepper flakes and cook, stirring, until fragrant and just turning pale golden, 1β2 minutes; do not brown.
Add the escarole to the pot in batches if needed. Cook, tossing with tongs, until wilted, 3β4 minutes.
Ladle the cooked beans into the pot along with about 6 cups of their cooking liquid (add more as needed to just cover). Bring to a gentle simmer.
Simmer the soup until the escarole is tender and the broth is lightly creamy from the beans, 10β15 minutes, stirring occasionally. For extra body, lightly mash a few beans against the side of the pot and stir back in.
Season the soup with the kosher salt and black pepper, starting with 1.5 teaspoons salt and all the pepper; taste and add the remaining salt if needed.
Let the soup rest off heat 5 minutes. Serve hot with Parmigiano Reggiano and crusty bread.