Posting as answer at your suggestion.
EJS is a fairly 'bare metal' implementation although it does have partials, I don't think it would cleanly give you what you want as it's not really modeled on a 'layout' concept. You might want to consider looking at Jade as a template engine. It is the default template engine for Express, which you will probably be using shortly if you aren't already.
Personally, I have found I really like Jade in general. It is much easier on my eyes simply because it is so terse/concise.
Resources:
The use of the block
syntax is what I think you want for what you describe, and I don't think it is well documented in those resources, but here's an example:
layout.jade
doctype html
html
head
title #{title} / #{version}
link(rel='stylesheet', href='/css/site.css')
script(src='/js/mygenericscript.js')
block head
body(class='foo')
// the line below could be written as '#maincontent.bodyclass'
div(id='maincontent', class='bodyclass')
block content
template.jade
extends layout
block head
// here I am including a page-specific script & stylesheet in the head section
script(src='/js/mypagescript.js')
link(rel='stylesheet', href='/css/crazypage.css')
block content
div(class='page-specific-class')
//etc, etc