Можно без фиксированной высоты синего блока и без absolute'а. Старый-добрый отрицательный margin + дополнительный padding сверху на размер border-radius.
Вообще, оную задачу можно решить множеством способов.
Update. В данном конкретном случае, т. к. макет из вопроса отличается от того, что вам нужно, то, модифицируя ваш код, можно так, например:
Обратного закругления в CSS нет. Только визуальными хаками это можно сделать.