Heat the oil in a large saucepan over medium heat. Add the onion and cook until softened, about 5 minutes.
Add the olives, orange segments, and tomatoes. Cover and simmer for 10 minutes.
Add the salt and pepper. Place the fish in the pan and spoon the sauce over it. Cover and simmer until cooked through, about 7 minutes.
Divide the fish and sauce among individual plates and sprinkle with the dill.