Paddy Madden böjd i en höger fot skott från 14 meter för att ge järnet en 12: e minut bly.
Resten av den första halvan var en skrotig affär på en bobbly pitch där få bollen under kontroll var inte lätt.
Den andra halvan var mycket livligare och kapten John Lundstram tog hem sidan nivå med en driven halvvolley från Joe Skarz vänster-wing korsning i 52: a minuten.
Det var Lundstrams första mål för säsongen och den ex-Everton midfielder var otur att inte få en andra fyra minuter senare med en 20-yard skott som kom tillbaka från undersidan av crossbaren.
Madden var alltid ett hot för Scunthorpe, och målvakten Simon Eastwood var tvungen att slå ut en drive från den farliga anfallaren, och sedan räddade hans huvud en stund senare.
Luke Daniels fantastiska punkt-blank spara höll Liam Sercombes volley två minuter från tiden, men Scunthorpe försvar var under hårt tryck och, efter ett hörn, Curtis Nelson körde en låg 14-yard skott över mål för Edwards att röra hem.
Rapport från Pressföreningen.
Match slutar, Oxford United 2, Scunthorpe United 1.
Andra halvlek, Oxford United 2, Scunthorpe United 1.
Ersättning, Scunthorpe United. Craig Davies ersätter David Mirfin.
Mål!  Oxford United 2, Scunthorpe United 1. Curtis Nelson (Oxford United) höger fotade skott från mycket nära håll till nedre vänstra hörnet. Hjälpt av Marvin Johnson med ett kors.
Hörnet, Oxford United. Sammankallad av Jordan Clarke.
Försök missade. Conor McAleny (Oxford United) höger fotade skott utanför lådan missar till höger.
Försök missade. Paddy Madden (Scunthorpe United) höger fotade skott utanför lådan är bara lite för hög.
Försöket räddades. Liam Sercombe (Oxford United) höger fotade skott från mycket nära håll sparas i nedre vänstra hörnet.
Conor McAleny (Oxford United) vinner en frispark i den defensiva halvan.
Foul av Jordan Clarke (Scunthorpe United).
Joe Skarz (Oxford United) vinner en frispark i den defensiva halvan.
Foul av Neal Bishop (Scunthorpe United).
Foul av Curtis Nelson (Oxford United).
Ivan Toney (Scunthorpe United) vinner en frispark i anfallshalvan.
Ersättning, Scunthorpe United. Hakeeb Adelakun ersätter Stephen Dawson.
Substitution, Oxford United. Kane Hemmings ersätter Antonio Martínez.
Försöket räddades. Josh Morris (Scunthorpe United) höger fotade skott från utsidan boxen sparas i mitten av målet.
Foul av Conor McAleny (Oxford United).
Neal Bishop (Scunthorpe United) vinner en frispark i den defensiva halvan.
Substitution, Oxford United. Marvin Johnson ersätter Joe Rothwell.
Foul av Conor McAleny (Oxford United).
Murray Wallace (Scunthorpe United) vinner en frispark i anfallshalvan.
Ersättning, Scunthorpe United. Ivan Toney ersätter Tom Hopper.
Försöket räddades. Paddy Madden (Scunthorpe United) huvudet från höger sida av sex yard box sparas i mitten av målet.
Foul av John Lundstram (Oxford United). Ordförande:
Josh Morris (Scunthorpe United) vinner en frispark i anfallshalvan.
Försök blockerat. Antonio Martínez (Oxford United) vänster fotade skott från vänster sida av lådan är blockerad.
Försöket räddades. Joe Rothwell (Oxford United) höger fotade skott från en svår vinkel till vänster sparas i mitten av målet.
John Lundstram (Oxford United) träffar baren med ett högerfött skott från utsidan av lådan.
Foul av Antonio Martínez (Oxford Förenade).
Murray Wallace (Scunthorpe United) vinner en frispark på högerkanten.
Mål!  Oxford United 1, Scunthorpe United 1. John Lundstram (Oxford United) höger fotade skott från höger sida av lådan till nedre vänstra hörnet. Hjälpt av Joe Skarz.
Foul av John Lundstram (Oxford United). Ordförande:
Tom Hopper (Scunthorpe United) vinner en frispark på högerkanten.
Andra halvan börjar Oxford United 0, Scunthorpe United 1.
Första halvlek, Oxford United 0, Scunthorpe United 1.
Philip Edwards (Oxford United) vinner en frispark i den defensiva halvan.
Foul av Tom Hopper (Scunthorpe United).
Joe Skarz (Oxford United) vinner en frispark i anfallshalvan.
Foul av Paddy Madden (Scunthorpe United).
Phil Edwards hävdade en stoppage-time vinnare som Oxford kom bakifrån för att slå promotion-chasing Scunthorpe i League One.