TL DR flexbox is super-high junk, and here is a grid that solves this insoluble problem.
Any SASS-Genius to help?
Hey. I would not consider myself a "genius of Sass" or anything else. I know this pretty well, but Hugo and several others have this title.
I have been called the "grid master" several times. This is pretty much the only thing I have in my life.
I did Jeet and Lost and literally spent hundreds of hours fighting what you are fighting right now. It haunts me. I wake up in the morning thinking about this problem and go to bed at night thinking about this problem. I have been doing this for many years.
Flexbox will not save you from this. In fact, the entire "flexbox will preserve mesh systems." Meme is really sad because it simply could not be more useful than not flexbox CSS.
Your original problem, as Michael_B pointed out , is that you are trying to use space-between. This will never work unless you have a certain number of elements on each line. You should not expect that someone will always have x number of elements in each row.

Then you switched to whole grids of “tons of markup” (a la Bootstrap) and margin-right , and it seems that you have selected margin-right grids. I tend to these because I care about what my markup looks like. Bootstrap grids get confused quickly, and I worked on countless teams in which some developer added something and screwed up the grid, forgetting the row or trying to insert something other than a column in a row. At first, no one notices this, but then you will see that the entire fragment of the site is offset by 15 pixels or so. Rewriting can be a pain. I even saw this several times by the self-proclaimed Bootstrap experts at ThemeForest.
<div class="container"> <div class="row"> <div class="col-md-6">1</div> <div class="col-md-6"> <div class="row"> <div class="col-md-6">1a</div> <div class="col-md-6"> <div class="row"> <div class="col-md-6">1b</div> <div class="col-md-6">2b</div> </div> </div> </div> </div> </div> </div> <div class="row"> <div class="col-6">1</div> <div class="col-6"> <div class="col-6">1a</div> <div class="col-6"> <div class="col-6">1b</div> <div class="col-6">2b</div> </div> </div> </div>
https://youtu.be/ueZ6tvqhk8U?t=18
The disadvantage of margin-right grids is the need to get rid of the last element in the margin-right , which can be difficult, especially for preprocessors. This can be done by forcing the user to specify which element they want as their last, but this creates a number of problems when dealing with uneven meshes.
For example, if I create a mixin that removes margin-right from every third element, but I want to have size and shape for my elements inside my grid, then I'm completely screwed. The only way I found to mitigate this rather rare problem is to use disgusting Bootstrap markup.
This is the moment when you return to flexbox, wanting well and come empty-handed.
A week ago, I decided to see if Bootstrap / Foundation users are interested in a grid that was not built on a map markup map. They refused, but I put a decent job in what, in my opinion, is the best solution to this problem.
Here elements of any size without additional markup grid Bootstrap and Foundation shot down : http://codepen.io/corysimmons/pen/MKzPWW?editors=1100
In any case, if you like grids, stay tuned for my next big grid installed at the beginning of next month (I will spam it on reddit and Hacker News). He does not solve this particular problem, but it will be quite revolutionary.
If someone is as obsessed with solving this problem as I am, I would like to chat with you about it. I am sure that I did not think about everything, and there some smart bastard just sat on the answer.