In a large Dutch oven or heavy-bottomed soup pot, heat the olive oil over medium-high heat. Add the ground beef and cook until browned, crumbling it into small pieces as it cooks. Drain excess grease if necessary.
Add the finely chopped onion, carrots, and celery to the pot with the beef. Sauté for 5-6 minutes until the vegetables have softened and the onion is translucent.
Stir in the minced garlic, dried oregano, dried basil, and dried thyme. Cook for 1 minute until fragrant.
Pour in the crushed tomatoes, the entire can of diced tomatoes (including the juices), and the beef broth. Stir well, scraping up any browned bits from the bottom of the pot.
Add the drained kidney beans and cannellini beans. Bring the soup to a gentle boil, then reduce the heat to medium-low, cover, and let it simmer for 15 minutes to allow the flavors to meld.
While the soup is simmering, cook the ditalini pasta in a separate pot of salted boiling water according to the package directions until al dente. Drain and set aside.
Remove the soup from the heat. Stir in the cooked pasta and fresh parsley. Taste and adjust seasoning with salt and pepper as needed.
Ladle the soup into warm bowls and garnish generously with freshly grated Parmesan cheese. Serve immediately with garlic bread or breadsticks.