Preheat oven to 350°F and grease a 9x13-inch baking dish. Cook macaroni according to package directions until al dente, then drain and set aside.
In a large saucepan, melt butter over medium heat. Whisk in flour and cook for 1 minute. Gradually add milk, whisking constantly until smooth and thickened, about 3-4 minutes.
Remove from heat and stir in 2 cups of cheddar cheese until melted. Season with salt and pepper.
Combine pulled pork with 1 cup BBQ sauce in a bowl. Mix the cooked macaroni with the cheese sauce.
Layer half the mac and cheese in the prepared baking dish, top with all the BBQ pulled pork, then add the remaining mac and cheese.
Drizzle remaining ½ cup BBQ sauce over the top, sprinkle with remaining 1 cup cheddar cheese, and top with crispy fried onions.
Bake for 25-30 minutes until bubbly and golden brown on top. Let rest 5 minutes before serving.