As an environmental engineer, I’ve cleaned up a few oil spills. More than once, I’ve utilized absorbents, sometimes by the truckload.
If you don’t mind a bit of an elbow workout, here’s a method to try. Remember to wear some gloves! Get rid of the oil that hasn’t soaked into the concrete with some cat litter or shop absorbent. Make sure to work the absorbent into the spill and get as much up as possible this way. A final pat with a newspaper usually gets up the remaining free liquid.
Now make up a paste of hot water and dry laundry or dish detergent. Use a stiff brush to work this into the concrete (which is porous), and then rinse and dry. Repeat the process if necessary. Not every stain will come up completely, but you can make it look a lot less noticeable.
Personally, in my garage, I keep old carpet remnants down underneath the vehicles. Every few years I throw them away and pick up some new scraps from a builder. The only bad thing about this method is that you might not see an oil or coolant leak that immediately needs repair, so watch those dash lights!