Place garbanzo beans in a large container and cover with several inches of cool water; let soak 8 hours to overnight. Drain.
Bring 2 cups of water to a boil in a large pot. Add garbanzo beans; reduce heat and simmer until almost tender, about 45 minutes. Drain and rinse with cold water until cool.
Spread garbanzo beans on a baking sheet and remove skins.
Heat olive oil in a large pot over medium heat; cook and stir onion until softened, about 3 minutes. Add celery, carrots, garlic, and fennel seeds; cook and stir for 4 minutes. Stir in garbanzo beans, vegetable broth, and tomatoes. Simmer soup until garbanzo beans are tender, about 15 minutes. Add grape tomatoes and spinach leaves; cook for 2 minutes.
Season soup with parsley, oregano, thyme, salt, and pepper. Stir well and remove from heat. Cover and let stand for 10 minutes before serving.