Heat butter and olive oil in a large pot over medium heat. Add onion; cook and stir until tender and translucent, about 5 minutes. Add butternut squash, carrots, celery, and garlic. Stir to combine and cook until slightly tender, about 2 minutes.
Pour milk and Italian seasoning into the pot with the butternut squash mixture. Stir in cornstarch gradually until combined. Bring to a boil. Mix in diced tomatoes, broth, and tomato sauce. Bring to a boil. Reduce heat to low and simmer until flavors are well combined and squash is softened, about 45 minutes. Season with salt and pepper. Pour soup into bowls and sprinkle basil over each.