In your case it's possible that collision happened at same time on top and left side. My current idea is to determinate how many pixels it collide from top and from left. and then based on those values you change only one direction.
in this example, let's say blue object is falling. it intersects red with 3 px from top and 15 px from left side. result is to move object 3 px up to stand on other object. because based on collision it's more "on top" of object than on "side" of it.
and how to get overlapping values you can use: Rectangle.Intersect(rectangle, rectangle)
and will return you those values.
there are probably better solutions, but that what dropped on my mind right now.