Здравствуйте. https://jsfiddle.net/we9c61o4/1/
Объясните, почему в первом примере отрицательные отступы не работают как во втором с overflow: hidden, и вместо .row смещается родительский блок .parent?
Скорее всего это из-за того, что во флексах не работает схлопывание марджинов. Если разукрасить .row, то станет видно, что отрицательный левый марджин тоже вылазит за пределы. А overflow не заставляет работать марджины, он просто режет лишнее.
Потому что это пространство появляется от отрицательного margin, но так как у него есть overflow hidden, который скрывает все что выходит за элемент, происходит так.