Another way might be to create a region out of each bbox, do a boolean intersection on them and see if a result is returned (the result if they overlap). If an error is returned it there is probably no intersection (or check error code to be sure). If you do get something returned you could also grab its bbox if required.
Just a thought...
edit: this will only work in 2d on the same plane of course.