In a large pot of boiling salted water, add rotini and ook for 6 to 8 minutes until tender. Drain and set aside.
In a saucepan over medium-high heat, melt 2 tablespoons of butter and add the onions. Add the flour and pepper and mix until mixture is pasty and forms a roux. Whisk milk into pan incorporating the roux. Bring to a simmer over low heat and allow to thicken; about 5 minutes. Once thickened, whisk in the cheeses. Add the pasta and mix until the pasta is well coated. Fold in spinach, sun-dried tomato oil, and sun-dried tomatoes.
In a small saucepan, melt remaining 2 tablespoons of butter over medium heat. Once melted, turn heat off and add bread crumbs and paprika. Mix well to combine.
Pour rotini into a casserole dish large enough to hold the pasta. Sprinkle the top with bread crumbs and place in oven for 15 to 18 minutes or until brown and bubbling.