Ingredients
4 tablespoons unsalted butter, room temperature, plus more for dishes
Kosher salt and freshly ground black pepper
1 pound short pasta, such as penne
1 bunch asparagus (about 1 pound), tips trimmed, stalks sliced into 1/2-inch pieces
2 cups whole milk
8 ounces cream cheese, cubed
8 ounces sharp cheddar, grated
4 ounces Gruyere, grated
Preparation
Preheat broiler, with rack 6 inches from heating element. Brush 4 small (8-ounce capacity) gratin dishes with butter. Bring a large pot of salted water to a boil; add pasta and cook according to package directions 1 minute less than al dente. Add asparagus and cook 1 minute more; drain.
Meanwhile, heat milk in a medium pot over medium-high until just simmering. Add cream cheese; whisk until smooth. Reserve 1/4 cup each cheddar and Gruyere; add remaining cheeses and butter to pot and whisk until smooth. Season with salt and pepper. Add cooked pasta and asparagus; stir to coat. Divide mixture among prepared dishes; sprinkle with reserved cheeses.
Broil, rotating dishes once, until pasta is crisp and browned in places, 1 to 2 minutes. Let stand 5 minutes before serving.