Heat olive oil in a large pot or Dutch oven over medium heat. Add the ground beef and cook until browned, breaking it up with a wooden spoon. Drain excess grease if necessary.
Add the diced onion, minced garlic, diced carrots, and diced celery to the pot. Sauté for about 5-7 minutes until the vegetables are tender.
Stir in the Italian seasoning, salt, and black pepper. Cook for another minute to release the flavors.
Add the canned kidney beans, cannellini beans, diced tomatoes (with their juice), and beef broth. Bring the mixture to a boil.
Reduce heat and let it simmer for about 20-25 minutes to allow the flavors to meld together.
In the last 10 minutes of cooking, add the small shell pasta to the pot and cook until al dente, following the package instructions.
Taste the soup and adjust seasoning if needed. Remove from heat.
Serve hot, garnished with chopped parsley and grated Parmesan cheese if desired.