"headings in the left column, values to the right"
Something like this?
<th scope="row">row header 1</th>
<td>some value 1</td>
<th scope="row">row header 2</th>
<td>some value 2</td>
<th scope="row">row header 3</th>
<td>some value 3</td>
Even if you only have a few rows, it's still quite helpful for screen readers to have a table structure. As I navigate vertically down the right column, the row header will be announced before the data cell, "row header 2, some value 2", so that gives a nice user experience.
I would avoid definition lists, <dl>/<dt>/<dd>, because they're announced differently with different screen readers. If you had 3 pairs of definitions, some screen readers will say you have a list with 3 items and others will say there are 6 items (they count both the dt and dd as separate list items). And when you navigate with the i key to move to the next list item, sometimes you can only navigate to the dt elements. Semantically, a definition list would be great to use but because of the varying support with screen readers, it's not a good idea.
<dt>row header 1</dt>
<dd>some value 1</dd>
<dt>row header 2</dt>
<dd>some value 2</dd>
<dt>row header 3</dt>
<dd>some value 3</dd>
And you can always keep it simple (not that tables aren't simple) and have heading and value pairs.
<h3>row header 1</h3>
<p>some value 1</p>
<h3>row header 2</h3>
<p>some value 2</p>
<h3>row header 3</h3>
<p>some value 3</p>
From a pure accessibility perspective, I would recommend the table approach.