One approach, as you described, is to run a cloth simulation with some obstacles placed in the box to create wrinkles and improve the result manually.
Start with the box, and place some obstacles with Collision enabled for them. Separate the box walls from the bottom of the box. So you can give only the bottom part a collision. The walls are ignored for the simulation (no collision) because the cloth slipped and folded, overlapping too much with the walls involved.
Side note: The box was created from the default cube (2 meters). So everything is large. The simulation worked quite well at this scale. But for the lighting, you might want to scale it down to real-world size. (I haven't done this yet in the screenshots.)
Scale the fabric up a little to have more geometry to work with. The plane here has 10 subdivisions and a Subsurface Division modifier for non-destructive testing. Level 3 setting for the modifier and the Leather preset for the Cloth settings did the trick.
Keyframe the location of the glass balls and move them down when the fabric has settled (so after 50 frames). The glass balls have also Collision with default values enabled.
In the end, the cube was simply placed in the center, with no simulation, no collision.
Apply the Subdivision Surface modifier. Then the Cloth modifier As Shapekey if you like or just apply it. After you have done this you can make manual corrections in the Sculpt mode with the Smooth, Grab, Elastic Deform, and Cloth brushes. The Cloth brush has different modes such as Grab, Pinch, Drag, ... that you can select in the tool settings.
Raise the cloth mesh and remove any obvious intersections to get the desired "nest effect". Add a Solidify modifier to the blanket to give it some thickness.
About the scale: the box is 2x2 meters and cloth simulation was run on this scale. If you have a smaller scale like 20x20 cm, you need to decrease the values for the collision Collision > Softbody & Cloth > Thickness Outer for the obstacles, and Cloth Settings > Collisions > Object Collisions > Distance for the blanket. There can still be a "float" effect. But if you use too small values the blanket scrunches itself up. It also looks less stiff but more relaxed on this scale. This can be adjusted with the Stiffness settings. Self Collision was not used.
The material for the blanket is an adjusted jeans PBR texture with a very high Sheen value (
(In case anyone is wondering, I wasn't aware that the Normal map is in DirectX format and should be converted to use it correctly.)