Add ground beef, breadcrumbs, cheese, egg and Italian seasoning to a large bowl. Mix to combine and portion into small / medium size meatballs.
Meanwhile heat oil in a large pot.
Add meatballs making sure not to over crowd the pan. (I had to do two batches).
Cook on medium high heat for 3-4 minutes on each side.
Take meatballs out of the pan.
Add in onion, carrots, celery and potatoes. Sauté for 3-4 minutes. (If there is not enough leftover oil from the meatballs add some more in.)
Add in garlic and cook for an additional minute.
Stir in broth, tomatoes, seasoning, bay leaves and Worcestershire sauce.
Bring to a boil then simmer for 30 minutes.
Add meatballs back to the soup and cook for an additional 15 minutes or until the meatballs are cooked all the way through and the potatoes are tender.
Season with salt and pepper to taste.
Serve hot with parmesan cheese and basil if desired.