Preheat oven to 400°F and line a baking sheet with foil
Cut eggplants in half lengthwise, score the flesh in a crisscross pattern without cutting through the skin, then brush with olive oil and season with salt and pepper
Roast eggplants for 30 minutes or until tender, then remove from oven and let cool slightly
Scoop out the flesh leaving a border so the shells hold their shape, then chop the scooped eggplant and set aside
In a pan, heat a little olive oil over medium heat, add diced onion and cook until soft, about 3–4 minutes, then add garlic and cook for 30 seconds
Stir in chopped eggplant, then add crushed tomatoes, tomato paste, oregano, red pepper flakes, salt, and pepper, cooking for 3–5 minutes until slightly thickened
Remove from heat and stir in mozzarella and parmesan
Spread a thin layer of crushed tomatoes on the bottom of a baking dish and place eggplant shells on top
Fill each eggplant with the mixture and top with additional cheese if desired
Bake for 15–20 minutes or until cheese is melted and bubbly, then remove from oven and top with fresh basil
Serve warm