In a small bowl, mash one-half can of beans with a masher or the back of a spoon, set remaining 1-1/2 cans aside.
Heat the oil and butter in a large soup pot over medium high heat. Add the onion, carrot, celery, zucchini, garlic, thyme, sage, salt, pepper and red pepper flakes, if using; cook stirring occasionally until the vegetables are tender about 15 minutes.
Add the broth and tomatoes and bring to a boil; lower heat and simmer for 30 minutes.
Add the mashed and whole beans and the spinach leaves; cook until the spinach is wilted, about 5-10 minutes more.
Serve topped with parmesan cheese, if desired.