Preheat oven to 400 degrees F. Trim asparagus ends and line them up in a single layer on a baking sheet. Drizzle 2 tablespoons of olive oil over the asparagus and season with salt and pepper, to taste.Roast the asparagus, uncovered, for 10-12 minutes or until they are fork-tender.
While the asparagus is roasting, place a large nonstick pan over medium heat and cook the bacon until it reaches desired doneness. Remove to a plate with paper towels to keep warm and soak up excess grease. Pour the remaining bacon grease out from the pan, leaving just enough to saute the onions and garlic, and return it to the burner. Add the sliced shallots and garlic. Sauté 2-3 minutes and remove to the same plate as the bacon or new plate.
Place butter into the same pan over medium heat. Once melted, add the flour and whisk until no longer clumpy. Pour in the half-and-half, whisking for 1 minute, or until it starts to thicken. Add the cream cheese and parmesan cheese. Stir until the cheeses melt.
Add the remaining seasonings, stirring to fully incorporate. Taste test to adjust seasonings as preferred. SEE NOTES BELOW ON SAUCE TEXTURE.
Pour the sauce down the center of the asparagus. Top with bacon, shallots, and garlic, followed by shredded mozzarella cheese.
Roast for an additional 8-10 minutes or until the cheese has melted and started to bubble. If you like your cheese to have a slightly crispy, brown bubble coating - turn the oven to broil on LOW for 2-3 minutes. Be sure to watch to prevent burning!
Remove, garnish with red pepper flakes, parsley, and dill weed - if desired, and serve immediately.
GARLIC LOVERS: This recipe is for garlic-lovers. If you're not a fan, either omit the sautéed garlic topping or omit adding the garlic powder to the cheese sauce.BACON: If you're not a fan of bacon, omit or replace with ham or prosciutto. SAUCE: If the sauce starts to thicken too much, add a splash more of half-and-half. If it's too thin, either continue to cook and whisk until it thickens, or sprinkle with a dash of additional flour.SEASONING: When the sauce is finished, taste test to adjust seasonings to your preference.CREAM CHEESE: I find that it is easier and quicker to melt in the pan if its added in cubes or 1 tablespoon increments.