Den misstänkte, Claudio Giardiello, greps i en förort efter att ha flytt från platsen på en motorcykel. Han var enligt uppgift en svarande i ett konkursärende.
Han tros ha skjutit ihjäl en medförsvarare, hans före detta advokat och en konkursdomstolsdomare.
Tidigare rapporter om en fjärde död visade sig vara felaktiga. Skottlossningen har lett till granskning av säkerhetsåtgärder.
Man frågar sig hur Giardiello lyckades smuggla in ett vapen i en välbevakad byggnad, använda det flera gånger och fly.
Den misstänkte greps av kabinieriofficerare i Vimercate, omkring 25 km nordost om centrala Milano, nära staden Monza.
Inrikesminister Angelino Alfano sade att den "förmodade lönnmördaren" hade förts till en militär polisbarack i Milanoområdet.
Ljudet av skottlossning hade utlöst panik i justitiepalatset på onsdagsmorgonen.
Hundratals människor strömmade nerför trapporna mot utgångarna medan polisen och militärpolisen letade efter skytten.
"Helt plötsligt hörde vi minst tre eller fyra skott," advokat Marcello Ilia berättade AFP nyhetsbyrån utanför byggnaden.
"Vi försökte ta reda på vad som pågick. Det var plötsligt massor av poliser som sa åt oss att inte lämna rummet, de stängde in oss, "sade han.
"Efter några minuter kom vi ut. De berättade för oss någon i kostym och slips var beväpnad och på fri fot i domstolen."
Tidningen La Repubblica, som citerade tjänstemän och vittnen, sade att revolvermannen hade varit med vid en konkursförhandling när ett slagsmål bröt ut i rättssalen på tredje våningen.
Han drog fram ett vapen och sköt advokaten, som hette Lorenzo Alberto Claris Appiani, samt en av hans medförsvarare, som hette Giorgio Erba.
Enligt La Repubblica var herr Appiani före detta advokat åt Giardiello som var vittne i målet.
Gärningsmannen lämnade rättssalen och gick till hovrättens domare, Fernando Ciampi, och sköt ihjäl honom. Det är inte känt om skytten hade några kopplingar till domaren.
Flera medier hade tidigare sagt att en fjärde person hade dött i händelse av en eventuell hjärtattack, efter rapporter om en kropp som hittades i byggnaden utan några uppenbara skador.
Men rapporterna - baserade på ett uttalande från räddningstjänsten, enligt AFP:s nyhetsbyrå - har visat sig vara felaktiga, med det organ som nu anses ha varit det av Erba.
Ytterligare två personer skadades under skottlossningen och behandlas på sjukhus.
Efter att ha gömt sig i justitiepalatset i mer än en timme flydde revolvermannen på en motorcykel, enligt La Repubblica.
Giardiello beskrevs som "aggressiv" och "lite paranoid" av sin tidigare advokat Valerio Maraniello i kommentarer som citerats av AFP:s nyhetsbyrå.
Besökare till Justitiepalatset måste passera genom metalldetektorer.
Advokater och domstolsanställda med officiell identifiering viftas dock regelbundet igenom, enligt Associated Press.
Ansa rapporterade att en av metalldetektorerna var trasig på onsdag morgon.
Italiens premiärminister Matteo Renzi beskrev attacken som "ett ögonblick av stor smärta, av sorg".
Han berömde polisen som arresterade mannen men sade att det var "otänkbart" att någon kunde komma in i en domstol med ett vapen, och lovade en utredning av händelsen.
Justitiepalatset ligger i Milanos centrum, bara några få gator från stadens katedral och shoppingdistrikt.
En revolverman har dödat tre personer i en skottlossningsrunda på Justitiepalatset i Milano i norra Italien.