The most straightforward solution I can think of is to use mapply
:
mapply(function(x, y) x[x[, 2] %in% y,], mylist, hislist, SIMPLIFY=FALSE)
# $a
# cola colb
# 2 2 5
# 3 3 6
#
# $b
# cola colb
# 2 2 7
# 3 3 8
The function is not much different than what you use in your current lapply
approaches.