永嘉年间,巴蜀流民分布在荆、湘之间,屡为官吏、土民所侵害。永嘉五年春,晋湘州刺史荀眺欲以造反罪杀尽流民,流民四、五万家被迫起义反晋,共推蜀中才子,时任晋醴陵令的杜弢为首领。杜弢自称梁、益二州牧,领湘州刺史。四月,杜弢起义军攻长沙(今属湖南)。五月,荀眺弃城逃奔广州,被起义军擒获。后伪降于征南将军山简,任广汉太守,击毙率众来攻的湘州郭察,南破零陵(今属湖南)、桂阳(今湖南郴州),东攻武昌(今湖北鄂州),杀晋官吏甚众。
311年汝班、蹇抚等率众起事,“四五万家一时俱反”。其时,杜弢正在湘中,由于他平时颇有声望,又同情流民的遭遇,遂被大家推举为首领。在流民的拥戴下,杜弢“自称梁、益二州牧,平难将军,湘州刺史”,公开举起了反抗晋朝暴政的旗帜。
杜弢起兵后,首先“攻破郡县”,攻打湘州。312年,西晋王朝派武昌太守陶侃与寻阳太守周访、历阳内史甘卓,联合水陆两军10万人围攻杜弢;又令都督王敦率军进屯豫章,作为诸军后援。313年8月,陶侃以振威将军周访、广武将军赵诱为前锋,向杜弢发起攻击。杜弢率起义军不畏强敌,顽强抵抗,多次击败官军,并击毙陶侃之侄陶舆。但因寡不敌众,起义军后在多次交战均遭失败,损失惨重。
杜弢降晋以后,退回湘州,但西晋诸将领为邀功请赏,仍不断袭击起义军。杜弢不胜愤怒,遂于315年3月,杀死西晋受降使者王运,再次揭竿而起,继续与官军对抗。随后,杜弢派杜弘、张彦东击豫章,派王真率精兵三千,从沅江下游出发,渡洞庭,入长江,径直攻击武昌,但两军均先后被晋军击败。
同年8月,陶侃、周访率晋军主力分别从北、东两路进逼长沙(临湘),与杜弢决战。这时,义军内部已生离散之心,杜弢又疑杀将领张奕,于是“众情益惧,降者滋多”。杜弢命王真出城挑战,陶侃在阵前煽动诱惑。陶侃趁势发起进攻,起义军大本营被官军攻陷,杜弢突围而走,不知所踪。陶侃攻占长沙(临湘),杜弢部将毛宝、高宝、梁堪被俘,“湘州悉平”。至此,历时近5年的长沙杜弢起义遂以失败而告终。