Heat a large saucepan over medium heat, add the olive oil and heat through. Add the onion to the pot and sauté until soft and translucent, about 6 minutes. Add the garlic and sauté an additional 30 seconds.
Stir in the tomato paste then add the tomatoes and their juices to the pot followed by the basil, and vegetable broth. Bring the mixture to a boil, then reduce the heat to medium-low and simmer for 45 minutes. Season with salt and pepper.
Mini mozzarella meatballs:
Preheat oven to 375ºF (190ºC). In a small mixing bowl stir together the breadcrumbs and milk and let set for 10 minutes.
Add the beef, onion, garlic, egg, parsley, salt and pepper to the mixing bowl. Add the soaked breadcrumbs to the mixture and use your hands to blend.
Scoop the mixture in rounded tablespoons and roll the mixture into balls. Push a piece of the mozzarella into the center of the mixture, closing the beef around it. Place on a parchment-paper-lined baking sheet. Bake until golden brown and cooked through, about 15 minutes.
For the garlic croutons:
Preheat oven to 325ºF (170ºC).
Toss the cubes of bread in the olive oil until evenly coated. Spread in an even single layer on an aluminum foil-lined baking sheet. Season with salt and pepper.
Bake for 20 minutes then sprinkle the Parmesan cheese over the top. Continue to bake until the croutons are crisp and the cheese has melted, about an additional 10 minutes.
For serving:
Add the cooked mozzarella meatballs to the soup and ladle into soup bowls. Top with the Parmesan croutons, a drizzle of olive oil and fresh basil.