Bring a large pot of salted water to boil. Add pasta to water and cook until 1 or 2 minutes before al dente, according to package directions. It shouldn't be completely crunchy, but should still be a little too firm to eat since it will continue to cook in the oven. Drain and set aside.
Preheat oven to 350°F and lightly butter 9x13-inch baking dish.
In a Dutch oven or large, deep sauté pan, heat olive oil over medium-high. Sauté onion, red bell pepper, and green bell pepper for 2 minutes; add drained tomatoes and continue to cook until onion and peppers are crisp-tender and tomato cooking liquid has thickened and mostly evaporated; about 5 minutes.
Add the butter. Sprinkle in garlic and flour and cook, stirring often, until flour is golden brown, about 2 minutes. Gradually pour in milk, stirring constantly, then half and half. Cook until sauce simmers and thickens; about 7 minutes. Remove from heat and stir in red pepper flakes, salt, and oregano.
Let the mixture cool for a minute or two, then stir in the Greek yogurt, mozzarella, and fontina.
Combine the sauce with the drained pasta. Stir to coat.
Roughly chop 2/3 of pepperoni. Stir into pasta mixture, reserving the remaining 1/3 whole pepperoni.
Transfer the pasta into the prepared baking dish, then scatter olives, remaining pepperoni, and parmesan over top. Bake until hot and bubbly, about 20 minutes. Let rest a few minutes before serving.
Notes
TO STORE: Leftover Italian mac and cheese will keep in the refrigerator for up to five days.
TO FREEZE: Italian mac and cheese may be frozen, well-wrapped, for up to two months. Defrost overnight in the fridge before warming.
TO REHEAT: Warm in a 350 degree F oven, covered with foil, until heated through.