Heat the olive oil and butter over medium heat in large pot.
When the butter is melted and foamy, add the onions and celery. Cook gently for 3 minutes, stirring frequently.
Add the garlic, oregano and black pepper, cook 1 minute, stirring frequently.
Add the asparagus (all but the reserved tips, if using) and the chicken broth. Raise the heat to high; bring to a boil, lower heat to medium-low and cover. Cook the soup for 20 minutes, until the asparagus is very tender, stirring occasionally. Keep the soup at a simmer, raise or lower the heat as needed.
If using the asparagus tips for garnish - While the asparagus soup cooks prepare the tips for garnish. First prepare a bowl of ice water and set aside. Add 1½ cups of water to a small saucepan and bring it to a boil. Add the reserved asparagus tips and cook for 1 minute. Use a slotted spoon to remove the tips from the boiling water and immediately plunge them in the ice water. Keep them in the ice water until they are completely cold. Remove the tips and place them on a kitchen or paper towel. Pat them dry and reserve until the soup is done.
When the asparagus soup is done, remove the pot from the heat. Process the soup with an immersion blender in the pot. If you do not have an immersion blender use a blender (see notes).
Add the half and half to the soup, stir to combine well. Return the pot to low heat and cook gently until warmed through – do not let the soup come to a boil.
Taste the soup and add salt, if needed. As a reference we added ½ teaspoon to ours.
Serve the soup and garnish with the reserved asparagus tips, parmesan cheese or your garnish of choice.