Prep the Topping: In a small bowl, combine the finely chopped parsley and lemon zest. Mix well and set aside.
Roast the Tomatoes: Preheat your oven (or toaster oven) to 400°F (200°C). In a baking pan, toss the whole cherry tomatoes with ¼ cup olive oil, chopped sage (if using), ½ teaspoon kosher salt, and ½ teaspoon black pepper.
Roast for 20-25 minutes, or until the tomatoes are wrinkled, have burst open, and are slightly collapsed. Remove from oven and set aside, reserving all the juices in the pan.
Start the Stew Base: While the tomatoes roast, heat 2 tablespoons of olive oil in a deep skillet or Dutch oven over medium heat. Add the chopped red onion and cook, stirring occasionally, until softened, about 3-4 minutes.
Build Flavor: Add the red pepper flakes, tomato paste, and minced garlic to the skillet. Cook, stirring constantly, for 1-2 minutes until fragrant. Be careful not to burn the garlic.
Simmer the Beans: Add the drained and rinsed white beans and the chicken or vegetable stock to the skillet. Stir to combine. Bring the mixture to a simmer and cook uncovered for 10 minutes, stirring occasionally.
Season and Taste: After 10 minutes, taste the broth and season with additional kosher salt and black pepper (I usually start with ¼ teaspoon of each).
Combine and Finish: Pour the roasted tomatoes and all their accumulated pan juices into the skillet with the beans. Stir gently to combine. Simmer uncovered for an additional 10 minutes to allow the flavors to meld.
Wilt Spinach (Optional): If using baby spinach, add it to the stew during the last 2 minutes of cooking and stir until just wilted.
Serve: Ladle the stew into bowls. Garnish generously with the reserved lemon parsley topping. Serve immediately with crusty bread for dipping.