Sauté the aromatics: Warm the olive oil in a large pot over medium heat. Add the onion with a pinch of salt and cook until soft and translucent, about 5–7 minutes.
Stir in the garlic and cook 30 seconds, just until fragrant.
Wilt the escarole: Add the chopped escarole in batches. Stir until it wilts down, 2–3 minutes. A touch of salt helps it release moisture and tenderize.
Build the broth: Add the broth, water, bay leaf, oregano, and red pepper flakes if using.
Bring to a gentle simmer.
Add and mash the beans: Stir in the cannellini beans. With a spoon or potato masher, lightly mash about 1 cup of the beans against the side of the pot. This thickens the soup naturally.
Simmer and season: Let the soup simmer 10–12 minutes, uncovered, until flavors meld and escarole is tender.
Taste and season with salt and black pepper. If you like, squeeze in lemon juice to brighten.
Optional pasta: If using small pasta, cook it separately until al dente, then stir a small handful into each mini serving. This keeps the pasta from soaking up too much broth in storage.
Portion into minis: Ladle the soup into small bowls, mugs, or ramekins for mini servings.
Top with grated Parmesan, a drizzle of olive oil, and black pepper.
Serve: Pair with toast or crostini. Finish with more lemon or chili flakes if you like a kick.