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.