Bring large pot of water to boil. Salt water and add pasta. Cook until al dente; drain and set aside.
In sauté pan, melt butter. Add onion and cook until translucent, about 5 minutes. Add garlic and cook until fragrant, about 1 minute. Whisk in flour and cook for 1 more minute. Slowly whisk in milk, whisking out any clumps. Cook until thickened. Stir in the Italian seasoning. Reduce heat to low.
Working in 3 batches, whisk in 2 1/2 cups mozzarella, making sure cheese is melted in between additions. Add in tomato sauce and pepperoni and heat until warmed through. Stir in reserved pasta.
Transfer mixture to oven-safe baking dish, or individual baking dishes and top with remaining 1/2 cup mozzarella. Place under broiler – until the cheese is melted.
Feel free to mix it up with your family's favorite pizza toppings, such as sausage, peppers or mushrooms.