Hi, I'm not an expert, but I'll give my 2 cents.
I see two solutions:
Step back the simulation when an overlap is detectedThis is the method posted in the pdf above. When you detect two objects overlaps (for example using the SAT theorem
https://en.wikipedia.org/wiki/Hyperplane_separation_theorem, step the simulation back to the previous state and step forward of Δt/2, if a collision occur step back again and forward of Δt/4, otherwise step it forward of Δt/4. Proceed in this way until you reach the precision you need.
At this point could you assume the two object are in contact and you compute the contact set between them (for example the contact set is the polygons extrema on the last separating axis).
Once you have the contact set you could compute the collision responce, and this is another algorithm.
Try to predict a collision before it occursYou assume that the objects have a costant linear and angular velocities, and you compute the next possible position without running the ODE solver. This could be done for OOB, but the formula that take into accounts the angular velocity is quite complicated. In this way you know that the object will collide in the next time step, and could compute the contact set and collision response.
Sadly it is a really broad argument, and it is impossible deal with it here in details, but I hope that I give an idea of possible solutions.
Anyway you can find these algorithms here:
https://www.amazon.it/dp/B003VIWRWW/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1, in particular the second one is explained in details.