Make a new design of Stack with a new function
It's O(1) no loops or recursion that I can see.

You shouldn't have to keep 2 stacks though. You can instead a second minNext field in the Node. It should be null except for when it contains the minimum of all subsequent elements (or it would be the top if the min stack).

public void push(int data) {
    Node newNode = new Node(data);
    if (top == null) {
        this.top = newNode;
        this.min = newMin;
    } else {
        newNode.next = this.top;
        this.top = newNode;
        if (newMin.data &lt; this.min.data) {
            newNode.nextMin = this.min;
            this.min = newNode;
        }
    }
}

public int pop() {
    if (top == null) {
        return -1;
    }
    int tempInt = this.top.data;
    if (this.top == this.min) { // check for equality of the nodes themselves
        this.min = this.top.nextMin;
    }
    this.top = this.top.next;
    return tempInt;
}