Melt the butter, if using, in a large pot and add the chopped onion, celery and garlic. Sauté, stirring often, until softened and the onions are translucent, about 5 minutes.
Add the smoked paprika and the salt and mix well. Lower the heat and add a splash of water and the flour and stir constantly for about 30 seconds or so.
Now add your chopped tomatoes to the pot and cook them, stirring often for 1-2 minutes. Then pour in your broth, the bay leaves, and the parsley. Mix well and bring to a medium boil, cooking for about 20-25 minutes, stirring occasionally.
Remove from the heat and remove and discard the bay leaves. Add the tofu and using an immersion blender, puree your tomato soup. Once smooth, taste and adjust for salt and pepper, if needed.
Serve garnished with fresh basil and enjoy.
For best results, let your cooked and pureed pot of soup rest for 10 minutes before serving. This quick rest time will thicken the soup a little more.If you don't have a stick blender or immersion blender, you may carefully transfer the soup, in batches, to a stand blender. Use extreme caution when blending hot liquids, don't fill the blender to the top, and work in as many batches as needed.Make it oil free by skipping the butter and using water or broth to sauté instead. Add more as needed, to prevent sticking.For a soy free version, skip the tofu and use 1.5 cups of cashew cream to stir in at the end. Keep in mind, this will increase the fat content.OR - Use a 15 oz can of drained and rinsed white cannellini beans if avoiding both soy and nuts.Tofu blocks vary in size, and I'm using a 454g block of medium/firm tofu this time, but anything from 350 to 454g will be fine for this recipe.Leftovers keep refrigerated for up to 3 days, or you may freeze for 2-3 months.