Prep the parsley: Trim off the very bottom end of the parsley’s stems. Discard, then finely chop the leaves and stems separately, keeping them in separate piles.
Sauté the aromatics: In a large Dutch oven, heat the olive oil over medium-high heat until shimmering. Add the onions, tomatoes and garlic, cooking until fragrant, about 3-5 minutes.
Add the remaining ingredients: Stir in the tomato paste, tomatoes, carrots, celery, and chopped parsley stems. Season with Italian seasoning, paprika, red pepper flakes or Aleppo pepper, and a big pinch of salt and pepper. Cook until the vegetables are slightly softened, about 5 minutes.
Combine liquids and beans: Add the vegetable broth and Cannellini beans. Increase heat to bring to a boil, then boil for about 5 minutes.
Simmer: Reduce heat, cover the pot partially, and simmer for 20 minutes, or until the beans and veggies are very soft.
Blend for texture (optional): Use an immersion blender to partially blend the soup, creating a creamier texture while leaving some chunks for texture.
Finish the soup: Stir in the spinach and cover until it wilts, about 1-2 minutes. Stir in the reserved parsley leaves, fresh dill, and white wine vinegar.
Serve: Ladle the soup into bowls, drizzle with olive oil, and sprinkle with additional red pepper flakes or Aleppo pepper.
