I think this can be done in O(log(n*n)*log(n)) time, where n is the no. of the rows of a square matrix.
By the properties of Matrix, the principal diagonal of the matrix is a sorted array. So, we can search an element or its lower bound in O(log(n)). Now, using this element as pivot, we have 4 sub-matrix. and we can say that all the elements in sub-matrix(top-left) are smaller, all the elements in sub-matrix (lower-right) are bigger. So, we can remove that from the search space.
Now, recursively search in sub-matrix (top-right) and in sub-matrix(lower-left).
Since, at each step, we perform a log(n) search (along principal diagonal) ad there can be atmost log(n*n) steps (as we reduce the search space by half in each step).
So, Time complexity = O(log(n)log(nn)).
Please correct, if anything is wrong.
Refrences - [Book]Cracking the coding interview (Question 11.6)