Вот идея использования одного элемента и псевдоэлемента с небольшим фильтром SVG для скругления краев:
.box {
width: 250px;
height: 150px;
margin:50px 20px;
position: relative;
background: red;
filter: url('#goo')
}
.box:before,
.box:after {
content: "";
position: absolute;
height: 30px;
width: 25%;
background: inherit;
}
.bottom:before {
top: 100%;
right: 0;
}
.bottom:after {
top: 100%;
left:50%;
border-radius:0 0 0 20px;
transform-origin:top;
transform:skew(8deg);
}
.top:before {
bottom: 100%;
left: 0;
}
.top:after {
bottom: 100%;
right:50%;
border-radius:0 20px 0 0;
transform-origin:bottom;
transform:skew(8deg);
}
<div class="box bottom"></div>
<div class="box top"></div>
<svg style="visibility: hidden; position: absolute;" width="0" height="0" xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="goo"><feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur" />
<feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 19 -9" result="goo" />
<feComposite in="SourceGraphic" in2="goo" operator="atop"/>
</filter>
</defs>
</svg>
Аналогичный вопрос, где я использовал тот же фильтр: радиус границы для пути отсечения, имеющего границу, созданную из тени