I think my workflow is similar to @Chris's, but because I'm working to a Subdivision Surface, there's less topology. I did this on your model, but have reproduced the moves on a smaller one to illustrate more easily.

All with Snap set to 'To: Vertex' and 'With: Active'...
I deleted your existing extrusion, filled the hole, duplicated it out along its normal axis. Then CtrlShiftB, bevelled it in place, away from the rest of the model.
Because Subdiv. is coming, 2 segments will do, in the bevel. Now to prepare a hole for it...

(Left) A couple of horizontal loops were needed to create edges for a hole with a nice even margin all the way round the bevelled face. Then, (Middle,) loops were cut and snapped into place along X and Y axes to match the bevel vertices. (Right) The hole was deleted, and the bevelled face snapped flush again.
The original loops from the rectangular face were dissolved away, leaving matching vertices in the hole and the new face.

Now, since I have the shipped add-on 'F2' activated, I can fill one face in the gap, and, having selected the leading edge, hold down F, to fill the rest. You can cut a loop through the new faces, and GG .. Evenly slide it (with F to flip if necessary) to make a neat isolating rim around the new face.
The rest is extrusions and insets, or bevels, whichever you prefer. I cut extra loops near the corners to hold the edges straight. After Subdiv:

Maybe this way is just my habit, rather than 'the best'.. but I personally find it easier to work to a hole in situations like this, where you need a partial bevel. You don't want the consequences of the bevel propagating over your nice clean mesh.