歴史的経緯（後述）から、東京方面から来る高崎線（湘南新宿ライン・上野東京ライン）の列車が、高崎線の延長のような運行系統で上越線を経由し、前橋駅まで乗り入れている。以前は桐生駅・伊勢崎駅 - 上野駅間を直通する列車もあったが、2004年10月16日のダイヤ改正で消滅した。線内で唯一の定期優等列車である特急「あかぎ」は、上野駅・新宿駅と前橋駅との間を結んでいる。普通・快速列車としては、上野駅発着のほか、高崎線から池袋駅・新宿駅・横浜駅などを経由して東海道線の平塚駅・国府津駅・小田原駅までの長距離列車（湘南新宿ライン）も早朝に上り2本（土休日は3本）が、高崎線から上野駅・東京駅・横浜駅などを経由して東海道線の熱海駅までの長距離列車（上野東京ライン）も設定されている。かつては平日夜間にも下り1本が設定されていたが、2014年3月15日のダイヤ改正をもって廃止された。また、高崎線上野発の下り初電前の朝5時台（高崎発は6時台）に籠原発前橋行きの列車が1往復設定されている。2015年3月14日までは22時台に前橋発籠原行き（高崎駅で時間調整：23時過ぎ発）があったが、翌14日の改正で高崎行きに見直された。
1時間に朝の通勤・通学時間帯は2本、その他の時間帯は1本の運行で、全線の中で最も運転本数が少ない区間である。多くが高崎駅までの直通列車だが、早朝・夜間を中心に小山駅 - 桐生駅間の区間列車も設定されている。また、1往復が小山駅で進行方向を変えて宇都宮線（東北本線）へ乗り入れ、黒磯駅まで運転されていたが、2017年3月4日のダイヤ改正で宇都宮駅までの運転に変更され、2019年3月16日のダイヤ改正で宇都宮線（東北本線）への乗り入れが廃止された。
線路名称上は小山駅が起点（東北本線の支線という扱い）であるが、小山駅に向かう列車が下りとして扱われる。また、桐生駅以西を走る全列車が新前橋駅から高崎駅まで上越線に乗り入れており、上越線内でも両毛線として案内される。以前は冬季（11月15日 - 3月31日）には前橋大島駅 - 思川駅間で車内保温のため一部時間帯をのぞき、ドアは半自動扱い（ドアを開放後に手でドアを開ける）となっていたが、2011年6月からは東北地方太平洋沖地震（東日本大震災）に伴う福島第一原子力発電所などの各発電所の停止による電力不足を受け、節電対策として全列車が全駅で通年半自動扱いになっている。
佐野駅を出ると、東武佐野線を右手に分岐し、殿町通り、昭和通り、朝日森天満宮の参道を横切る。秋山川を渡り、栃木県道270号佐野環状線を越える。佐野市街地を抜けると田園地帯が続く。才川を渡ると旗川地区に、旗川を渡ると足利市富田地区に入る。出流川を渡り大小山が近づくと富田駅に着く。富田駅 - 桐生駅間は概ね足尾山地の縁に沿って走っている。富田駅を出て、群馬県道・栃木県道67号桐生岩舟線をくぐると、北に栗田美術館を、南にあしかがフラワーパークを望める。2018年（平成30年）4月1日に開業したあしかがフラワーパーク駅はフラワーパーク西門に近接している。フラワーパークを過ぎると、左手は一面の田園地帯となる。尾名川を渡る手前の大久保町付近が両毛線の最南端にあたる地点である。尾名川を渡ると毛野地区に入る。大坊山が近づき住宅地に入ると、神社前踏切の左手前に旧東足利駅の跡地が見える。袋川を渡ってしばらく進むと、「小京都」と呼ばれる足利市の中心駅・足利駅に至る。足利駅では桐生方面行列車は2番線に停車、対向列車は右手の駅舎側ホーム1番線に停車する。
徳川幕府は実に260年ほども続いたが、幕末には内政でも外政でも、また後継者選び等でも問題が山積の状態となり混乱を来たした。1862年（文久2年）に参勤交代が緩和され、江戸の武家人口が激減。政治的中心も京都に移り、15代将軍徳川慶喜は将軍としては江戸に一度も居住しないような状態であった。徳川家と敵対する勢力によって一連の軍事的また政治的クーデターである明治維新が行われ、1868年（明治元年）に発せられた江戸ヲ称シテ東京ト為スノ詔書によって江戸は「東京」と改称され、東京への改称とともに町奉行支配地内を管轄する東京府庁が開庁された。また天皇の東京行幸により江戸城が東京の皇居とされた。明治維新により徳川将軍家が静岡に転封された際にも人口が減少した。明治2年(1869年)に東京府は新たに朱引を引き直し、朱引の内側を「市街地」、外側を「郷村地」と定めた。この時の朱引の範囲は江戸時代の「墨引」の範囲におおむね相当し、安政年間以降一時的に江戸に組み込まれた品川などは、東京とは別の町として扱われ、町数も1048(『府治類集』)に減った。翌年には、最初は京都にあった明治新政府も東京に移され、（江戸時代の200年以上、江戸は行政首都であったわけであるが、再び）日本の事実上の首都となった。1871年に廃藩置県が行われ、東京府は新・東京府に置き換わった。