Because your width is unknown (100%), you are going to want to set the height using padding percentage, because percentage padding is calculated from the width.
.circle {
background: #515151;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
border-radius: max;
text-align: center;
color: white;
width: 100%;
padding-bottom:100%;
height:0;
position:relative;
}
.circle-caption {
display: block;
left: 0;
height: 1em;
position: absolute;
right: 0;
top: 50%;
margin-top: -.5em;
}
<div class="circle" id="step-1-default-image-box">
<span class="circle-caption">1</span>
</div>
Vertical centering becomes tricky with this, so you'll have to add another wrapper around the text that you can position absolutely.
Someone else just added an answer like this and deleted it, but I think that this is the best way to do this.