Spread the asparagus pieces, onion and garlic over a large baking sheet.
Drizzle with olive oil and sprinkle with sea salt and pepper.
Roast in a preheated 400 F. oven for 15-20 minutes, tossing once half way through the cooking time.
Remove from oven when done and set aside to cool slightly.
While the vegetables are roasting melt the butter in a medium size sauce pan on medium high.
Add the flour, salt and pepper to the sauce pan once the butter has melted.
Whisk the dry ingredients into the butter and cook for 2 minutes, whisking continuously.
Slowly add the milk to the sauce pan while whisking, being sure to scrape the bottom and sides of the pan until the flour mixture is incorporated into the milk.
Add the Parmesan cheese and whisk until melted into the sauce.
Increase the heat to high and bring to a boil, whisking the entire time.
Once the sauce has come to a boil continue cooking until thickened, about 6-8 minutes.
Remove the pan from the heat and set aside.
Put the asparagus, onion and garlic into a large pot.
Add the chicken broth to the pot and slowly bring to a boil. Once boiling add the cream sauce to the pot and whisk until incorporated.
Reduce heat to low and simmer for 15-20 minutes or until the asparagus is tender. Cooking time will depend on how thick the asparagus is.
Once tender using a slotted spoon transfer ¾th of the asparagus pieces, the onion and garlic to a blender.
Pulse until liquefied.
Return to the pot and simmer an addition 10 minutes or until the soup is piping hot.
Grate some Parmesan cheese on each serving and garnish with a few asparagus pieces if desired.