Melt butter and olive oil in a large pot. Add onion and celery, season with salt and pepper, and cook until soft, about 5 minutes.
Add potatoes, zucchini, thyme, and garlic. Cook 2–3 minutes. Pour in broth and simmer until potatoes are tender, about 10 minutes.
Stir in broccoli and cream. Simmer 10 minutes more, until broccoli is tender.
Blend half the soup until smooth, then return it to the pot. Stir in pesto and adjust seasoning.
Serve with a drizzle of olive oil and shredded cheese on top.
