WINDOWS 3.1 E WINDOWS NT
In risposta all'imminente rilascio di OS/2 2.0, Microsoft sviluppò Windows 3.1, che includeva diversi miglioramenti rispetto a Windows 3.0 (il più importante dei quali il supporto dei font scalabili TrueType, sviluppati insieme ad Apple), ma che consisteva soprattutto in correzioni di bug e nel supporto multimediale. Inoltre era stato rimosso il supporto per la "modalità reale", e quindi poteva essere eseguito solo su processori 80286 o successivi. In seguito Microsoft rilasciò Windows 3.11, dapprima solo in versione "Windows for Workgroups" che includeva un deciso miglioramento nella gestione delle reti, che poteva essere eseguito solo in modalità "386 avanzata", richiedendo pertanto almeno un processore 80386. Entrambe le versioni ebbero lo stesso notevole successo di vendita della versione 3.0. Nonostante Windows 3.x in definitiva non avesse molte caratteristiche di cui invece OS/2 disponeva (nomi di file lunghi, un desktop, la protezione del sistema da programmi malfunzionanti) Microsoft in breve dominò il mercato delle interfacce grafiche per PC. La Windows API divenne lo standard di fatto nello sviluppo di software commerciale.
La versione 3 aveva una veste grafica molto più ricca di colore e introduceva il supporto audio. La versione 3.11 consentiva di creare una Intranet, per collegare più computer.
Nel frattempo Microsoft continuava nello sviluppo del nuovo sistema operativo a 32 bit chiamato Windows NT. Microsoft assunse Dave Cutler, uno dei creatori di OpenVMS presso Digital. In quel periodo Digital aveva appena bloccato il progetto del successore di VMS, chiamato "Mica", e insieme alla perdita di Dave Cutler passò a Microsoft molta esperienza e molti altri programmatori. Digital inoltre accusò Cutler di aver portato con sé in Microsoft anche i sorgenti di Mica, e ne derivò una causa legale. Come spesso accade negli Stati Uniti, l'accusa fu ritirata in seguito a trattativa privata, con Microsoft accettò di pagare 150 milioni di dollari e di supportare in Windows NT il microprocessore DEC Alpha di Digital.
Windows NT 3.1 (il marketing di Microsoft voleva far apparire Windows NT come prodotto parallelo a Windows 3.1) arrivò in versione beta alla Professional Developers Conference di San Francisco nel luglio 1992. Microsoft annunciò alla conferenza anche i piani futuri, che includevano il successore di Windows 3.1, con nome in codice Chicago, e un successivo sistema operativo, con nome in codice Cairo, che avrebbe unificato in un unico sistema operativo Windows NT 3.1 e Chicago. In realtà Cairo non vide mai davvero la luce, e l'unificazione delle due linee di prodotto è avvenuta solo in Windows XP.
I due principali problemi di Windows NT erano in definitiva gli stessi di OS/2: richiedeva un hardware troppo potente per l'epoca, e disponeva di pochi device driver di terze parti a causa della difficoltà di programmare il suo complesso modello di astrazione dall'hardware (Hardware abstraction layer). Le case produttrici di hardware erano riluttanti a sostenere i costi di sviluppo di questi device driver, anche perché Windows NT era un prodotto poco diffuso sul mercato. Gli utenti inoltre non erano molto interessati a migrare a Windows NT: era richiesto un PC troppo potente e l'interfaccia utente era la stessa di Windows 3.1 ed era inferiore a quella di OS/2. Si era quindi in una fase di stallo: per le stesse ragioni OS/2 e Windows NT non decollavano, e Windows 3.1 continuava a guadagnare quote di mercato.
Ad ogni modo, Windows NT aveva caratteristiche che lo rendevano perfetto per il mercato di server LAN (che nel 1993 stava conoscendo un rapido successo), grazie alle opzioni avanzati di networking di cui disponeva, e grazie all'efficienza del nuovo file system NTFS. La successiva versione 3.5, seguita a breve distanza dalla versione 3.51, segnarono l'inizio dell'ascesa di Microsoft in questo segmento di mercato, che negli anni seguenti avrebbe finito con il dominare a spese di Novell.
Una delle caratteristiche più avanzate introdotte con Windows NT fu la nuova API a 32 bit, pensata per sostituire la precedente API a 16 bit di Windows 3.1. Questa nuova API fu chiamata Win32, e la precedente prese il nome di Win16. L'API Win32 ebbe tre implementazioni: quella di Windows NT, una versione ridotta chiamata Win32s che poteva essere installata su Windows 3.1, e una per l'imminente Chicago. In questo modo Microsoft cercò di assicurarsi un ponte di compatibilità tra tutte le sue versioni di sistemi operativi, e questa fu una carta vincente.