Sometimes you cannot use padding (if you have a background or top border). In that case you can add a dummy element to create the pagebreak:
Code:
<p>Some text at the end of a page.</p>
<div class="pagebreak"/>
<h2>Title, with top margin retained</h2>
Then you just style div.pagebreak to be invisible (heigh: 0; margin: 0) and force a pagebreak (page-break-before: always). In some renderers you may have to add some content to the <div> ( ).