Warm the skillet: Set a large skillet over medium heat and add 2 tablespoons olive oil. When it shimmers, add the diced onion and a pinch of salt.
Cook 5–7 minutes until soft and lightly golden.
Add aromatics: Stir in the garlic and red pepper flakes. Cook 30–60 seconds until fragrant, being careful not to brown the garlic.
Build the base: Add 1 tablespoon tomato paste. Cook and stir for 1–2 minutes to caramelize it slightly.
This deepens the flavor.
Add tomatoes and herbs: Pour in 1 1/2 cups cherry tomatoes (or a 14-ounce can diced tomatoes with juices). Add 1 teaspoon dried oregano, 1/2 teaspoon dried thyme, and a small sprig of fresh rosemary if using. Cook 3–4 minutes to soften and fuse.
Make it saucy: Pour in 1 cup vegetable broth and bring to a gentle simmer.
Taste and adjust salt.
Add the beans: Stir in the cannellini beans. Let everything simmer for 8–10 minutes, stirring occasionally, until the sauce thickens slightly and the beans are tender and creamy.
Stir in greens: Add chopped kale (stems removed) or a few handfuls of baby spinach. Cook 2–3 minutes, until wilted but still vibrant.
Finish bright: Turn off the heat.
Add the zest of half a lemon and 1–2 teaspoons lemon juice. Drizzle with 1 tablespoon olive oil. Stir in 1–2 tablespoons nutritional yeast or vegan Parmesan if you like, plus 1 tablespoon capers or chopped olives for extra pop.
Taste and season: Add salt and black pepper to taste.
Remove the rosemary sprig if used.
Serve: Scatter chopped parsley or basil on top. Serve with warm crusty bread for dipping, or spoon over creamy polenta or cooked grains.