here is what I came up with:
.main>* {
  display: inline-block;
  width: 33%;
}
<div class='main'>
  <div class='left'>abc</div>
  <div class='center'>def</div>
</div>
 
 
As demonstrated here.
Yet another solution
This solution will always place .left first.
HTML
<div class='main'>
  <div class='center'>def</div>
  <div class='left'>abc</div>
</div>
CSS
.main {
  display: flex;
  flex-flow: row;
  flex-wrap: no-wrap;
}
.main > .left {
  order: 1;
}
.main > .center {
  order: 2;
}
And if you want your inner-boxes to have same width:
.main > * {
  flex-basis: 33%;
}