1 - the collider depth is too low compared to the size of the collider. Increase it to 20 in the sprite collection editor and it behaves a LOT better.
2 - the red object has a mesh collider - mesh-mesh collisions in Unity don't work unless one is marked as convex. The red one is convex, so you'll need to tick convex on it.
Once those have been resolved, its doing exactly what I'd expect it to, which isn't great. Once it penetrates the surface by a certain amount, Unity thinks its on the "other side" of it and pushes it out. Try it out to see what I mean. I think you will have to solve this by other means, eg. Pfaeff's solution.