Nutrition per serving may change if servings are adjusted.
8 ounces elbow macaroni (about 1¾ cups)
1 tablespoon olive oil
1 cup finely chopped onion
4 cloves garlic, minced
¾ teaspoon salt, divided
10 ounces baby spinach (about 14 cups)
1 cup grape tomatoes, halved
1 tablespoon butter
1 tablespoon all-purpose flour
½ teaspoon ground pepper
⅓ cup 1% milk
⅓ cup low-sodium vegetable broth
1 cup shredded reduced-fat Cheddar cheese, divided
Preheat oven to 350°F.
Cook macaroni according to package directions, omitting salt. Drain and set aside.
Meanwhile, heat oil in a large skillet over medium-high heat. Add onion, garlic, and ¼ tsp salt; cook, stirring often, until the onion is tender, 3 to 4 minutes. Gradually add spinach, stirring until wilted and adding 1 Tbsp. water at a time, if needed. Transfer the mixture to a large bowl.
Add tomatoes to the skillet and cook over medium-high heat until they begin to soften, about 1 minute. Transfer to the bowl with the spinach mixture.
Reduce heat to medium and add butter to the pan. When the butter has melted, whisk in flour, pepper, and the remaining ½ tsp. salt. Cook, whisking constantly, for 2 minutes. Gradually whisk in milk and broth. Cook, whisking, until thickened and bubbly, 1 to 2 minutes. Gradually whisk in ¾ cup cheese until melted.
Add the macaroni and sauce to the bowl with the spinach mixture; mix well. Transfer to an 11x7-inch baking dish and sprinkle with the remaining ¼ cup cheese.
Bake until the cheese is melted, 10 to 15 minutes.