Heat oil in a large pot over medium until barely shimmering. Add shallots, season with ½ teaspoon salt, and gently cook until softened and lightly browned, about 3 minutes. Stir in garlic and pepper flakes, cook 1 minute.
Deglaze with wine then simmer until nearly evaporated, about 5 minutes. Add honey and cook until thickened and bubbly, about 1½ minutes
Add tomatoes and their juices, crushing tomatoes with hands as you add them, 2 cups water, and basil. Increase heat to medium-high and bring to a boil. Reduce heat to medium-low and simmer for 10 minutes.
Using an immersion blender (or in batches in a standard blender) partially puree soup so large chunks are blended, but small bites of tomato and garlic remain.
Return soup to the pot and bring it to a low simmer. Stir in balsamic vinegar and spinach; season with salt and pepper to taste.
Top each serving of tomato soup with cracked black pepper, a drizzle of good extra-virgin olive oil and large shreds of Parmesan.