Warm the pot: Heat the olive oil in a large pot over medium heat until shimmering.
Sauté aromatics: Add the onion, carrot, and celery with a pinch of salt. Cook 5–7 minutes, stirring, until soft and lightly golden.
Add garlic and spices: Stir in the garlic, oregano, basil, smoked paprika, and red pepper flakes.
Cook 30–60 seconds until fragrant.
Toast the tomato paste: Add the tomato paste and stir for 1–2 minutes to deepen its flavor and color.
Build the base: Pour in the crushed tomatoes and broth. Stir well, scraping up any browned bits from the bottom.
Add beans: Stir in the rinsed beans. Bring to a gentle simmer.
Simmer: Cook uncovered for 15–20 minutes, stirring occasionally.
The soup should thicken slightly and the flavors will meld.
Season: Add sugar or honey to balance the acidity. Taste and add salt and black pepper as needed.
Finish: Stir in the vinegar or lemon juice to brighten. If you want a creamier texture, mash some beans against the side of the pot or blend a cup of the soup and return it to the pot.
Serve: Ladle into bowls and top with chopped parsley or basil.
Add Parmesan or a drizzle of olive oil if you like.