Dice the onion, carrots, celery, potato, and zucchini into ½-inch pieces, trim and cut the green beans into 1-inch pieces, mince the garlic, and drain and rinse both cans of beans.
Heat the olive oil in a Dutch oven over medium heat, then cook the onion, carrots, and celery with ½ teaspoon salt for 7 to 8 minutes until softened. Stir in the garlic and tomato paste and cook 1 to 2 minutes until the paste darkens.
Add the potato, crushed tomatoes, broth, Parmesan rind, bay leaves, oregano, thyme, and remaining 1 teaspoon salt. Boil, then reduce to medium-low, partially cover, and simmer 15 minutes until the potato is almost tender.
Stir in the green beans, zucchini, cannellini beans, and kidney beans, and simmer partially covered for 10 minutes until the green beans are crisp-tender.
Stir in the ditalini and cook 8 to 10 minutes, stirring often, until al dente. Add up to 1 cup hot water or broth if the soup looks too thick.
Remove the Parmesan rind and bay leaves, stir in the spinach until wilted, add the black pepper, and taste and adjust the salt.
Ladle into warmed bowls and top each with about 1 tablespoon grated Parmesan and a scattering of chopped basil or parsley.