In a large stockpot over medium heat, add the olive oil, celery, carrots, onions, rosemary, salt, and pepper. Stir to combine and cook over medium heat covered for 20 minutes until the vegetables are tender.
Add the minced garlic and tomatoes, and stir to combine. Cook for a few minutes until the tomatoes begin to soften.
Add the sliced cabbage, stir to combine, and cook covered for 5 minutes until soft. Add the broth and spring of rosemary, stir, and let the soup simmer over medium heat for 30 minutes.
Remove the spring of rosemary from the soup.
Add the black beans and baby spinach, stir to combine, and turn the heat off. Spinach will wilt in the soup.
To serve, ladle in bowls and top with Parmesan cheese and red pepper flakes if desired.