Finely dice the onion and celery and crush the garlic. Heat the olive oil in a large saucepan or Dutch oven over a low/medium heat. Add the onion, garlic and celery. Sweat gently for 2-3 minutes until tender and fragrant.
Finely chop the cherry tomatoes. Add the tomatoes to the saucepan along with the ground beef and oregano. Stir well to combine and cook the beef through, browning it all over. Add the balsamic vinegar and cook for a minute more. If you would like, you may use an alternative ground meat such as pork or turkey. Please adjust cooking times if needed for different meats.
Add the stock and passata. Bring the soup up to a gentle boil. Reduce to a simmer and cook for 10 minutes to reduce a little, allowing the flavors to infuse the stock and the beef to soften. You may swap the beef stock for a chicken or vegetable stock if desired. You may also add salt and pepper to season if needed. This will depend on the strength of seasoning in your stock.
While the soup is simmering, slice the ends off the zucchini and peel the outer skin and discard. Peel the zucchini flesh into wide ribbons. After 10 minutes, add the zucchini ribbons to the soup. Stir to combine and cook briefly until the zucchini noodles are just tender. You do not want to overcook the zucchini or they will become soggy and release too much liquid.
Divide the soup between individual serving bowls. Top each bowl of soup with a scattering of grated parmesan and chopped fresh basil. Serve hot with your preferred choice of Keto sides.