Heat 1 tablespoon of the oil in a saucepan. Add the onion and cook over a low heat for 7 minutes until softened. Add the garlic and cook for 1 minute. Stir in the tomatoes and basil and leave to simmer for 10 minutes.
Meanwhile, rub 2 tablespoons of the oil over the vegetables and season well. Heat a griddle pan until smoking hot and cook the vegetables in batches for 3–5 minutes on each side until lightly charred. Add to the tomato sauce to gently cook.
Brush the remaining oil over the fish fillets and season. Griddle in the pan, skin-side down, for 5–7 minutes until browned and crisp. Turn over and cook for a further 3 minutes until just cooked through.
Season the sauce and spoon on to serving plates. Top with the fish fillets.