You only need DOS to do disk things. It's a Disk Operating System, obviously enough.
If you don't need a file system, you can write your program or bootstrap into sector 0 of the disk, and go from there. You are still using another operating system, the BIOS, in this case. Typically int, uh... 13h for disk access (read sector and such)? The BIOS reads the boot sector into RAM at 0070:0000h, checks for validity, then jumps into it. From there, you need to read more sectors (if 512 bytes is not enough) into whatever memory you like.
If you want bare bare metal, you have to put your program on a ROM on an expansion card, and have it mapped to a suitable location (usually 8k at C8000h or so; there's a map of usable locations). The CPU still starts in the system BIOS, but it jumps into your ROM during initialization, and everything is yours at that point, no disks needed.
If you well and truly want everything to yourself, you must replace the system ROM, which might not always be doable (though it's almost always EPROM or Flash in a socket, which is nice). In that case, the CPU resets to F000:FFF0h or something like that, and the rest is yours. Just don't forget to initialize the DMA and PIT, or the RAM will be very forgetful. And set the graphics registers to something sensible (or jump into the video BIOS to do it for you), and the PIC and so on...
Classic IBM PC hardware is quite well documented, but proprietary devices are not. For them, you need drivers, which you either need some way to access, or a compatible OS to run them in. In the classic days, this is precisely what they did -- the driver was included on-chip, initialized during boot. That's how the BIOS knows about an installed hard drive card, for instance, and how to use it. Since the 90s, software drivers for interfacing to the OS have been necessary, and you will have a harder and harder time using those on a "bare" system without constructing something very much equivalent to an OS in the first place.
Also, practically anything since the early to mid 90s will be 32 bit protected mode (or more), including device buffers mapped to upper (32 bit) memory blocks. Also, PnP is a thing, including enumerating all the buses and bridges, northbridge and southbridge controllers, even just the RAM...
Tim